two controllers in one layout, rails 3
        Posted  
        
            by 
                Grizlord
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Grizlord
        
        
        
        Published on 2011-03-09T19:37:58Z
        Indexed on 
            2011/03/10
            0:10 UTC
        
        
        Read the original article
        Hit count: 341
        
Okay, I have two models, a recipe model and a category model. In my layout(application.html.erb) I have a main container div that "yields" the recipes index action. I'm trying to list all the category names as links in a side bar(also a div) by iterating over them in an unordered list. When you click one of the links it will go to the category show page which will then list all the recipes in that category.
Here is how I'm trying to list the links in -
<div class="container" id="categories">
<% for category in @categories %>
  <ul>
    <li><%= link_to category.name, category %></li>
  </ul>
<% end %>
</div>
The problem is I get a NoMethodError -
You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.each
It is not retrieving the records from the model. Any suggestions on how to get this done would be greatly appreciated. I tried to render a partial as some of the other similar posts have said but still get the same error.
This is the exact error -
NoMethodError in Recipes#index
Showing /Users/grizlord/Rails/recipe2/app/views/layouts/application.html.erb where line #39 raised:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
Extracted source (around line #39):
36:     </div>
37:     <div class="container" id="categories">
38:       Browse by Category
39:       <% for category in @categories %>
40:         <ul>
41:           <li><%= link_to category.name, category %></li>
42:         </ul>
© Stack Overflow or respective owner