Rails i18n在显示之前检查项目是否存在

时间:2018-04-24 07:40:12

标签: ruby-on-rails internationalization rails-i18n items

我有一个基本循环来显示i18n列表中的项目:

  <% t('.items').each do |item| %>
    <p><%=item[:description]%></p>
    <p><%=item[:description_html]%></p>
  <%end%>

我的.yml文件组织如下:

fr:
  pages:
    index:
      items:
      - title: The title
        description: The description 
        description_html: <p> The description with HTML tags</p>

有时,项目description_html在我的.yml i18n文件中没有任何值,所以我想先在我的代码中检查description_html是否有值,然后再将其显示在我的HTML中。有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

如果您只想测试翻译是否可用,可以使用I18n.exists?

例如:

<% if I18n.exists?('pages.index.items.description_html') %>
  <%= I18n.t('pages.index.items.description_html') %>
<% end %>

如果您只想在没有翻译时显示某些默认输出,可以按this answer添加默认输出:

<%= I18n.t('pages.index.items.description_html', default: 'No description') %>