【问题标题】:Create new helpers创建新的助手
【发布时间】:2012-03-15 00:02:30
【问题描述】:

我有一些 Rails 应用程序。例如,我有下一个模型:UserPostUser 模型已生成 DevisePost 模型具有列 textuser_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

    一般来说,模型方法不是关于表示,而是更多关于逻辑。

    【讨论】:

    • 我明白了。谢谢你的回答。
    猜你喜欢
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2011-08-04
    相关资源
    最近更新 更多