大家好,我有一系列哈希:
@buttons = [{:serno=>1, :parent_serno=>0, :name=>"Home"},
{:serno=>2, :parent_serno=>0, :name=>"Search"},
{:serno=>3, :parent_serno=>0, :name=>"Search Payment"},
{:serno=>4, :parent_serno=>1, :name=>"Problematic Search Payment"},
{:serno=>5, :parent_serno=>1, :name=>"Cash Error"},
{:serno=>6, :parent_serno=>2, :name=>"Payment Note"},
{:serno=>7, :parent_serno=>2, :name=>"Search Payment By Category"},
{:serno=>8, :parent_serno=>3, :name=>"Search Payment New"},
{:serno=>9, :parent_serno=>3, :name=>"User Mangement"}]
我想为每个数组哈希(例如哈希x)创建div,它是“parent_serno == 0”,在div中写出它们的名字并在其中创建另一个div,对于每个数组哈希都是“parent_serno == hash” x [:serno]“。
我试图创建部分:
<% for m in @buttons %>
<% unless @parent.present? %>
<% if m[:parent_serno] == 0 %>
<div>
<%= m[:name] %>
<% @parent = m[:serno] %>
<% if @buttons.find{ |b| b[:parent_serno] == @parent }.present? %>
<% @buttons.find{ |b| b[:parent_serno] == @parent }.each do %>
<%= render partial: "navbar", object: @parent %>
<% end %>
<% end %>
</div>
<% end%>
<% else %>
<% if m[:parent_serno] == @parent %>
<div>
<%= m[:name] %>
<% @parent = m[:serno] %>
<% if @buttons.find{ |b| b[:parent_serno] == @parent }.present? %>
<% @buttons.find{ |b| b[:parent_serno] == @parent }.each do %>
<%= render partial: "navbar", object: @parent %>
<% end %>
<% end %>
</div>
<% end%>
<% end %>
<% end %>
并在另一个html.erb文档中呈现它,但显然它不起作用:( 它只给出了数组中第一个哈希的名称,并且我想是递归停止。
答案 0 :(得分:1)
我认为你需要的部分内容应该是这样的:
_button.html.erb
<div>
<%= button[:name] %>
<% render partial: 'button',
collection: @buttons.select { |b| b[:parent_serno] == button[:serno] } %>
</div>
index.html.erb
...
<% render partial: 'button',
collection: @buttons.select { |b| b[:parent_serno] == 0 } %>
...