创建新的帮助者

时间:2012-03-15 00:02:31

标签: ruby-on-rails-3 helper

我有一些rails应用程序。例如,我有下一个模型:UserPost。 生成User模型DevisePost模型包含text列和user_id列。关系:用户has_many :posts和帖子belongs_to :user。我需要确定谁是帖子的所有者。例如,所有者可以编辑他的帖子。 如果我理解正确,我需要创建一些助手。我是rails的新手,不明白是谁做的。有人能帮助我吗?

1 个答案:

答案 0 :(得分:3)

“助手”一词可能令人困惑。如果使用rails生成器,则会在app/helpers目录中获取名为<model>s_helper.rb的文件。您可以在此处定义可在视图模板中直接访问的方法。例如,您可以根据存储在用户模型的pronoun字段中的值来定义名为gender的方法,例如

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 %>.

当然,您可以在模型中完成相同的操作,而且通常这是编写帮助程序的更好地方。例如,定义用户状态的逻辑可能是

def status_name
  if created_at > 30.days.ago
    "old timer"
  else
    "noob"
end

然后,只要您可以引用用户模型的实例,就可以调用@user.status_name

通常,模型方法不是关于表示而是关于逻辑。