我有一个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
答案 0 :(得分: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}")
请注意,如果您尝试动态执行此操作,这不是一个好的解决方案(如果是这种情况,您将需要将翻译存储在数据库中,this可能有帮助)