0

助手/子类别_helper.rb:

module SubcategoriesHelper
  def has_topic_headings?
    self.topic_headings
  end
end

类别/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>

请注意,视图页面属于类别,而不是子类别。

4

2 回答 2

1

您试图在模型上调用它,这就是为什么在包含助手时不调用它的原因。助手用于视图,有时用于控制器。

于 2013-08-30T12:23:58.693 回答
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 %>  

希望它会有所帮助。谢谢

于 2013-08-30T12:26:11.083 回答