2015-05-31 3 views
1

У меня есть следующие настройки:Рубин на Rails не определен метод `заголовка» для ноль: NilClass

Product.rb

class Product < ActiveRecord::Base 
    belongs_to :category 
end 

Category.rb

class Category < ActiveRecord::Base 
    belongs_to :category 
    has_many :categories 
    has_many :products 
end 

categories_controller.rb

def show 
end 

private 
    def set_category 
    @category = Category.find(params[:id]) 
    end 

    def category_params 
    params.require(:category).permit(:title, :category_id) 
    end 

products_controller.rb

def product_params 
    params.require(:product).permit(:title, :price, :text, :category_id, :avatar) 
end 

Категория показать

<% @category.products.each do |p| %> 

    <article class="content-block"> 
     <h3><%= @p.title %></h3> 
    </article> 

<% end %> 

И это возвращает ошибку в названии. Что я тут сделал?

ответ

4

Оно должно быть:

<h3><%= p.title %></h3> # as, your block variable is p, not @p 

НЕ более

<h3><%= @p.title %></h3> 

Одно предложение, вы можете написать свой set_category метод, как:

def set_category 
    @category = Category.includes(:products).find(params[:id]) 
end 

Это будет решать N + 1 проблемы с использованием Яркие ассоциации по загрузке техника.

Смежные вопросы