3

我尝试使用语言环境:

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。

4

2 回答 2

6

您可以尝试使用:

<%= catalog.attributes["catalog_name_#{locale}"] %>

或者更短但等效(如评论中所述):

<%= catalog["catalog_name_#{locale}"] %>
于 2012-05-08T07:22:32.683 回答
1

您还可以使用send

catalog.send("catalog_name_#{locale}")
于 2012-05-08T07:35:05.453 回答