Ruby on rails 3 Rails 3.1,habtm关系中的价值内部化?

Ruby on rails 3 Rails 3.1,habtm关系中的价值内部化?,ruby-on-rails-3,ruby-on-rails-3.1,internationalization,i18n-gem,Ruby On Rails 3,Ruby On Rails 3.1,Internationalization,I18n Gem,我得到了一个事件模型,它包含了两个类别。这种关系运作良好,我可以毫无问题地从类别中插入/检索值 我的问题是,有没有一种方法可以将这些类别的价值观相互融合 类别模型 class Category < ActiveRecord::Base has_and_belongs_to_many :events end 我假设这些类别基本上是固定的(否则你就不能对它们进行任何i18n) 一种解决方案是将数据库中的类别保存为键(带下划线),并为每个键将i18n添加到语言环境文件中: en.yml c

我得到了一个事件模型,它包含了两个类别。这种关系运作良好,我可以毫无问题地从类别中插入/检索值

我的问题是,有没有一种方法可以将这些类别的价值观相互融合

类别模型

class Category < ActiveRecord::Base
 has_and_belongs_to_many :events
end

我假设这些类别基本上是固定的(否则你就不能对它们进行任何i18n)

一种解决方案是将数据库中的类别保存为键(带下划线),并为每个键将i18n添加到语言环境文件中:

en.yml

categories:
  some_category: "Some category text"
  some_other_category: "Some other category text"
  ......
如果您这样做,例如
Category.all.map(&:name)
将导致
[“某些类别”、“某些其他类别”…]

在你看来:

- Category.all.each do |category|
 .field
   = check_box_tag "category_ids[]", category.id, @event.category_ids.include (category.id)
   = I18n.t("categories.#{category.name}")
注意,如果您试图动态地执行此操作,那么这不是一个好的解决方案(如果是这种情况,则需要将翻译存储在数据库中,并且可能会有所帮助)

en.yml

categories:
  some_category: "Some category text"
  some_other_category: "Some other category text"
  ......
- Category.all.each do |category|
 .field
   = check_box_tag "category_ids[]", category.id, @event.category_ids.include (category.id)
   = I18n.t("categories.#{category.name}")