rails - 将方法名称传递给辅助函数

时间:2009-12-22 11:00:39

标签: ruby-on-rails

docs说应该按照以下方式使用options_from_collection_for_select:

options_from_collection_for_select(collection, value_method, text_method, selected = nil) 

所以,就我而言,例如

options_from_collection_for_select(@messages,'id','title')

但我需要向标题添加更多信息,所以我尝试做的是:

class Message < ActiveRecord::Base

 def proper_title
  self.name+", updated at "+self.updated_at
 end

end

并且它有效,但事情是我需要国际化的字符串,而且模型比使用控制器要困难一些。 现在我必须在这种情况下进行模型国际化还是可以以某种方式绕行?感谢

1 个答案:

答案 0 :(得分:1)

您仍然可以在模型中调用I18n.translate()。它将为您提供与t()助手

相同的结果
# Message.rb
def proper_title
  I18n.translate("message.proper_title", :name => self.name, :updated_at => self.updated_at)
end

# en.yml
en:
  message:
    proper_title: "{{name}}, updated at {{updated_at}}"

# view
options_from_collection_for_select(@messages,'id','proper_title')