Ruby on rails 在rails视图和控制器中迭代记录
如何在rails视图中输出类别和子类别?像这样:Ruby on rails 在rails视图和控制器中迭代记录,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,如何在rails视图中输出类别和子类别?像这样: 第一类名称 第一个类别子项1名称 第一个类别子2名称 第一个类别子3名称 第二类名称 第二个类别子项1名称 第二个类别子2名称 第二个类别子3名称 我的模式.rb: create_table "categories", force: :cascade do |t| t.integer "title" t.boolean "state", default: true t.integer "
- 第一类名称
- 第一个类别子项1名称
- 第一个类别子2名称
- 第一个类别子3名称
- 第二类名称
- 第二个类别子项1名称
- 第二个类别子2名称
- 第二个类别子3名称
create_table "categories", force: :cascade do |t|
t.integer "title"
t.boolean "state", default: true
t.integer "parent_id" # id of parent category
end
我的类别\u控制器.rb
def show
@category = Category.find(params[:id])
#child categories of current parent category
@child_categories = Category.where(parent_id: @category.id)
#subchild categories of current parent category
@child_categories.each do |category|
@subchild_categories = Category.where(parent_id: category.id)
end
end
<% if @child_categories.any? %>
<ul>
<% @child_categories.each do |child| %>
<li>
<%= child.title %>
<ul>
<% @subchild_categories.each do |subchild| %>
<li><%= subchild.title %></li>
<% end %>
</ul>
</li>
<% end %>
</ul>
<% end %>
myshow.html.erb
def show
@category = Category.find(params[:id])
#child categories of current parent category
@child_categories = Category.where(parent_id: @category.id)
#subchild categories of current parent category
@child_categories.each do |category|
@subchild_categories = Category.where(parent_id: category.id)
end
end
<% if @child_categories.any? %>
<ul>
<% @child_categories.each do |child| %>
<li>
<%= child.title %>
<ul>
<% @subchild_categories.each do |subchild| %>
<li><%= subchild.title %></li>
<% end %>
</ul>
</li>
<% end %>
</ul>
<% end %>
-
现在我得到了这样的结果:
- 第一类名称
- 第二个类别子项1名称
- 第二个类别子2名称
- 第二个类别子3名称
- 第二类名称
- 第二个类别子项1名称
- 第二个类别子2名称
- 第二个类别子3名称
#试试这个:
def秀
@category=category.find(参数[:id])
@子类别=类别。其中(父类别id:@Category.id)
@子孩子_类={}
@儿童|类别。每个do |类别|
@子子女类别[类别.标题]=类别.其中(父项id:类别.id)
结束
结束
#鉴于:
您可以在类别
模型中创建一个子类
方法,该方法调用where(parent\u id:id)
,然后您就可以使用它了
def self.children
where(parent_id: id)
end
然后,您可以在您的视图上使用它,只要您愿意:
@category.children.each do |child_category|
child_category.children.each do |sub_child_category|
sub_child_category.children.each do |sub_sub_child_category|
// as much as you want to
end
end
end