0

这是我的index_controller

  def index
    @category = Category.all
  end

我的类别模型包含

has_many :sub_categories

我的 sub_category 模型包含

belongs_to :category

这是我的看法

<% category.sub_categories.each do |f| %>
    <li>f.name</li>
<% end %>

我正在使用 rails 4 并且收到错误

undefined local variable or method `category' for #<#<Class:0xab758cc>:0xb56c46d8>
4

3 回答 3

3

您对命名约定以及提示您编写的代码类型有点偏离:

def index
  @categories = Category.all
end

@category应该是@categories,因为Category.all将返回 0、1 或许多类别对象的 ActiveRecord 关系,而不是单个对象。

然后:

<% @categories.each do |category| %>
  <% category.sub_categories.each do |sub_category| %>
    <li><%= sub_category.name %></li>
  <% end %>
<% end >

首先迭代来自 的类别Category.all,然后对于每个类别,迭代其子类别。

于 2013-09-10T17:52:55.697 回答
1

你有两个问题。

  • 应该是@category,不是category
  • 它应该是<li><%= f.name %></li>
于 2013-09-10T17:52:59.260 回答
0

您错过了对实例变量和要使用的ERB标签的引用f.name,它应该是

<% @category.sub_categories.each do |f| %>
  <li><%= f.name %></li>
<% end %>
于 2013-09-10T17:48:41.887 回答