【问题标题】:rails “undefined method” when invoking a helper method from the view从视图调用辅助方法时出现“未定义的方法”
【发布时间】:2014-12-07 12:57:55
【问题描述】:

我想从这样的辅助方法中获取一个人的性别:

sportists_helper.rb

def sportists_gender
  gender = self.gender

  if gender == "1"
    "Male"
  elsif gender == "2"
    "Female"
  end
end

然后在视图中打印出来:<%= sportists_gender %>,但这给了我undefined method 'gender'错误,这是为什么呢?

【问题讨论】:

    标签: ruby-on-rails ruby helpermethods


    【解决方案1】:

    假设你有 Person 模型。这是一个例子:

    助手:

    def sportists_gender(person)
      gender = person.gender
    
      if gender == "1"
        "Male"
      elsif gender == "2"
        "Female"
      end
    end
    

    从 View.erb 调用:

     <% @person = Person.first %> // any object according to your view.
     <%= sportists_gender(@person) %> // display result. 
    

    【讨论】:

    • 澄清一下,您的原始代码崩溃的原因是因为助手不知道self 是什么;助手不会以某种方式免费访问模型对象。
    • @Xeen,您可能还想重新考虑一下设计。在 Person 模型本身而不是视图助手中使用此方法是否更有意义?
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2011-11-19
    • 2011-08-22
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    相关资源
    最近更新 更多