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_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 に答える