【问题标题】:How do I use a helper in my view?如何在我的视图中使用助手?
【发布时间】:2013-09-18 03:27:15
【问题描述】:

我在 Rails 4 上,我正在制作一个葡萄酒评论应用程序,我为每种葡萄酒都有一个页面。在葡萄酒页面 (show.html.erb) 上,我列出了对该葡萄酒的所有评论。我正在尝试制作一个简单的方法来显示评论中给出的评分,并且我正在尝试在我的评论帮助文件中执行此操作

module ReviewsHelper
  def display_rating
    if self.rating == 1
        "<div class='btn btn-success'>:)</div>"
    elsif self.rating == 2
        "<div class='btn btn-warning'>:|</div>"
    else 
        "<div class='btn btn-danger'>:(</div>"
    end
  end   
end

由于某种原因,当我尝试加载我的葡萄酒页面时,我得到了一个异常 undefined method 'display_rating' for #&lt;Review:0x007fc89bae6148&gt;。我尝试将方法移动到 WineHelper.rb 文件,但我得到了同样的结果。我错过了什么?谢谢。

【问题讨论】:

  • 我建议将评论作为参数传递给助手,将其定义为def display_rating(review),并在视图中将其称为&lt;%= display_rating(@review) %&gt;

标签: ruby-on-rails


【解决方案1】:

您似乎正在使用视图助手来渲染display_rating。 self 的使用在这里不准确。您必须实现该辅助方法,例如:

def display_rating(obj)
  if obj.rating == 1
    "<div class='btn btn-success'>:)</div>"
  elsif obj.rating == 2
    "<div class='btn btn-warning'>:|</div>"
  else 
    "<div class='btn btn-danger'>:(</div>"
  end
end 

然后调用那个方法:

display_rating(@obj)

【讨论】:

  • 啊……就是这样。我知道这很简单。谢谢。
  • 另外,最好不要将 html 硬编码为字符串,而是使用 Rails 的 content_tag 助手,例如content_tag(:div, ":)", class: "btn btn-success")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多