【问题标题】:Create new helpers创建新的助手
【发布时间】:2012-03-15 00:02:30
【问题描述】:
我有一些 Rails 应用程序。例如,我有下一个模型:User、Post。
User 模型已生成 Devise。 Post 模型具有列 text 和 user_id。关系:用户has_many :posts 和帖子belongs_to :user。我需要确定谁是帖子的所有者。例如所有者可以编辑他的帖子。
如果我理解正确,我需要创建一些助手。我是 Rails 的新手,不明白是谁做的。有人可以帮我吗?
【问题讨论】:
标签:
ruby-on-rails-3
helper
【解决方案1】:
“帮助者”一词可能会令人困惑。如果您使用 rails 生成器,您将在 app/helpers 目录中获得一个名为 <model>s_helper.rb 的文件。您可以在此处定义可在视图模板中直接访问的方法。例如,您可以根据存储在 User 模型的 gender 字段中的值定义一个名为 pronoun 的方法,例如
def pronoun(user)
case user.gender
when "M"
"his"
when "F"
"her"
else
"their"
end
end
所以在引用某个用户的视图中,你可以这样做
<%= @user.name %> got <%= pronoun(@user) %> ice cream in <%= @user.city %>.
当然,您可以在 model 中做完全相同的事情,而且通常这是编写帮助程序的更好地方。例如,定义用户状态的逻辑可能是
def status_name
if created_at > 30.days.ago
"old timer"
else
"noob"
end
然后,在任何可以引用用户模型实例的地方,都可以调用@user.status_name
一般来说,模型方法不是关于表示,而是更多关于逻辑。