在标签中显示带范围的类别?

时间:2014-07-01 11:45:56

标签: ruby-on-rails scope

我试图找一些标签,其中我想展示一个不同类别的" Food"在他们每个人。

我有一个模型"类别",具有:name属性,我有一个模型" Foods"具有:category_id属性。

模型协作是:食物有一个类别,类别有很多食物。

我在我的模型中创建了一个范围:by_category:

scope :by_category, -> category {where(category_id: category).reverse_order}

我在我的控制器中创建了一个by_category方法:

  def by_category
    @category = Category.find(params[:category_id])
    @foods = Food.by_category(params[:category_id])
  end

在此之后,我将我的数据库播种了7个类别。

所以,我只是想在我的视图中的每个标签中显示一个不同的类别,但没有任何显示(我的标签是空的),虽然我创造了一些食物。

在我看来

<ul class="accordion-tabs">
  <li>
     <% @foods.by_category(1).each do |food| %>
      <p><%= food.name %><%= food.ingredients %></p>
     <% end %>
  </li>
  <li>
     <% @foods.by_category(2).each do |food| %>
      <p><%= food.name %><%= food.ingredients %></p>
     <% end %>
  </li>
 </ul>

更新

我的种子是:

SUSHI_CATEGORIES.each do |category_name|
    Category.create(name: category_name, description: "Esto es una categoria")
puts "Categoria creada"
end

Food.create(name: "Bandeja Addict", ingredients: "La mejor bandeja de addict, te traemos ahora con salmon y pepino", addict_food_image: "http://www.monstersushi.com/images/slides/sushi20.jpg")
puts "Bandeja Addict creada"

我在这里缺少什么?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我通过在每个标签的视图中传递参数来修复它:

 <% @foods.by_category(params[3]).each do |food| %>
    <%= render "food_card" %>
 <% end %>