0

我有一个 HABTM 类别的事件模型。这种关系工作正常,我可以毫无问题地从类别中插入/检索值。

我的问题是,有没有办法将这些类别的值进行国际化(I18n)。

类别模型

class Category < ActiveRecord::Base
 has_and_belongs_to_many :events
end

事件模型

class Event < ActiveRecord::Base
....
has_and_belongs_to_many :categories
....

_form.html.haml(用于事件)

- Category.all.each do |category|
 .field
   = check_box_tag "category_ids[]", category.id, @event.category_ids.include?(category.id)
   = category.name
4

1 回答 1

0

我假设类别几乎是固定的(否则你将无法对它们进行任何 i18n)

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

en.yml

categories:
  some_category: "Some category text"
  some_other_category: "Some other category text"
  ......

如果你这样做Category.all.map(&:name)会导致["some_category", "some_other_category", ....]

在您看来:

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

请注意,如果您尝试动态执行此操作,这不是一个好的解决方案(如果是这种情况,您将需要将翻译存储在数据库中,可能会有所帮助)

于 2012-04-11T07:08:21.023 回答