Rails I18n:实现显示前检查字段是否存在的方法
解决方案
要避免渲染空的description_html内容,只需要在输出前加上条件判断即可,确保只有当该字段存在且非空时才渲染对应的标签。
修改后的ERB代码如下:
<% t('.items').each do |item| %> <p><%= item[:description] %></p> <% # 只有当description_html存在且不为空时才渲染 %> <% if item[:description_html].present? %> <p><%= item[:description_html].html_safe %></p> <% end %> <% end %>
关键说明:
present?方法会同时检查值是否为nil(即YAML中未定义该字段)或者空字符串,覆盖了两种可能的“无内容”场景;- 因为
description_html包含HTML标签,记得调用html_safe方法,这样Rails才会解析标签而不是把它们当成纯文本输出。
如果你的场景中只需要判断字段是否存在(哪怕字段值是空字符串也想渲染),可以把条件换成item.key?(:description_html),但present?的适用性更广,更符合“避免空内容”的需求。
内容的提问来源于stack exchange,提问作者florian
相关产品推荐
相关产品推荐

