我尝试使用区域设置:
在 routes.rb 中我有:
scope "(:locale)", :locale => /en|ro|ru/ do
resources :catalogs
end
在* application_controller.rb *我有
# tell the I18n library where to find your translations
I18n.load_path += Dir[Rails.root.join('lib', 'locale', '*.{rb,yml}')]
# set default locale to something other than :en
I18n.default_locale = :en
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
在数据库中,我有一个包含列的表:catalog_name_en; catalog_name_ro和catalog_name_ru
在视图 list.html.erb 中,我添加了以下代码:
<% @catalogs.each do |catalog| %>
<tr>
<td class="center"><%= catalog.id %></td>
<td class="center"><%= "catalog.catalog_name#{locale}" %> </td>
</tr>
<% end %>
在html页面中,我只看到“catalog.catalog_name_en”,而不是列catalog_name_en的值。 帮我PLZ。
答案 0 :(得分:6)
您可以尝试使用:
<%= catalog.attributes["catalog_name_#{locale}"] %>
或更短但相当(如评论中所述):
<%= catalog["catalog_name_#{locale}"] %>
答案 1 :(得分:1)
您还可以使用send
:
catalog.send("catalog_name_#{locale}")