助手/ subcategories_helper.rb:
module SubcategoriesHelper
def has_topic_headings?
self.topic_headings
end
end
categories / show.html.erb包含
<% @category.subcategories.each do |subcategory| %>
<li>
<h6>
<%if subcategory.has_topic_headings? %>
<%= link_to subcategory.name, subcategory, data: :has_topic_headings %>
<% else %>
<%= link_to subcategory.name, subcategory %>
<% end %>
</h6>
<hr>
</li>
<% end %>
页面返回
undefined method `has_topic_headings?' for #<Subcategory:0xa68748c>
请注意,视图页面属于类别,而不属于子类别。
答案 0 :(得分:1)
您正试图在模型上调用它,这就是为什么在包含帮助程序时不会调用它的原因。帮助者在那里观看,有时候是控制者。
答案 1 :(得分:0)
这是你的方法:
<%= link_to subcategory.name, subcategory, data: :has_topic_headings %>
编辑:对不起误解。错误发生在您在链接中传递的数据中:
data: :has_topic_headings
rails要求使用上述方法,而不是has_topic_headings?
编辑:是的,正如@techvineet所说,你不能在子类别对象上调用辅助方法。 你应该在子类别模型中编写方法:
def has_topic_headings?
return true if self.topic_headings
end
或者您可以在助手类中执行此操作:
def has_topic_headings(subcategory)
return true if subcategory.topic_headings
end
并以您的形式,将其称为:
<%if has_topic_headings(subcategory) %>
<%= link_to subcategory.name, subcategory, data: :has_topic_headings %>
<% else %>
<%= link_to subcategory.name, subcategory %>
<% end %>
希望它会有所帮助。谢谢