这是我的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>
答案 0 :(得分:3)
您只需稍微了解一下命名约定以及它提示您编写的代码类型:
def index
@categories = Category.all
end
@category
应为@categories
,因为Category.all
将返回0,1或多个Category对象的ActiveRecord关系,而不是单个对象。
然后:
<% @categories.each do |category| %>
<% category.sub_categories.each do |sub_category| %>
<li><%= sub_category.name %></li>
<% end %>
<% end >
首先,您从Category.all
迭代类别,然后对每个类别迭代其子类别。
答案 1 :(得分:1)
你有两个问题。
@category
,而不是category
<li><%= f.name %></li>
答案 2 :(得分:0)
您错过了对实例变量和ERB
标记的引用以使用f.name
,它应该是
<% @category.sub_categories.each do |f| %>
<li><%= f.name %></li>
<% end %>