Question

helpers/subcategories_helper.rb:

module SubcategoriesHelper
  def has_topic_headings?
    self.topic_headings
  end
end

categories/show.html.erb contains

          <% @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 %>

The page returns

undefined method `has_topic_headings?' for #<Subcategory:0xa68748c>

Please note that the view page belongs to the Category, not the Subcategory.

Was it helpful?

Solution

You are trying to call it on model which is why it is not called on when helper is included. Helpers are there for views and sometimes for controllers.

OTHER TIPS

Here is your method :

<%= link_to subcategory.name, subcategory, data: :has_topic_headings %>

Edit: Sorry for misunderstanding. the error is in your data which you are passing in your link:

data: :has_topic_headings

rails is asking for above method, not for has_topic_headings?

Edit: Yes, as @techvineet said, you cannot call a helper method on a subcategory object. you should write method in your subcategory model:

 def has_topic_headings?
    return true if self.topic_headings
 end

Or you can do this in your helper class:

def has_topic_headings(subcategory)
   return true if subcategory.topic_headings
end

and in your form, call it like this:

<%if has_topic_headings(subcategory) %>
  <%= link_to subcategory.name, subcategory, data: :has_topic_headings %>
<% else %>
  <%= link_to subcategory.name, subcategory %>
<% end %>  

Hope it will help.Thanks

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top