你可能想引入一个层次到您的数据对象。 这可以通过几种方法完成。如果你想硬编码的东西看看the ancestry gem
:
# locations_controller.rb
def index
@locations = State.all
end
# app/views/locations/index.html.erb
<ul>
<%= render @locations %>
</ul>
# app/views/locations/_state.html.erb
<li>
<%= state.name %>
<% if state.provinces.present? %>
<ul>
<%= render state.provinces %>
</ul>
<% end %>
</li>
# app/views/locations/_province.html.erb
<li>
<%= province.name %>
<% if province.districts.present? %>
<ul>
<%= render province.districts %>
</ul>
<% end %>
</li>
# app/views/locations/_district.html.erb
<li>
<%= district.name %>
<% if district.cities.present? %>
<ul>
<%= render district.cities %>
</ul>
<% end %>
</li>
# app/views/locations/_city.html.erb
<li>
<%= city.name %>
</li>
对于你需要引入一个祖先方法为每个模型面包屑。例如
class City
...
def ancestry
district.ancestry << self
end
...
end
# ... other classes
class State
...
def ancestry
[self]
end
end
然后你就可以呈现面包屑部分
# app/views/layout.html.erb
<%= render partial: 'shared/breadcrumbs', locals: { ancestry: @some_instance.
def breadcrumbs(ancestry)
ancestry
end
# app/views/shared/_breadcrumbs.html.erb
<ul>
<% ancestry.each do |location| %>
<li>
<%= link_to location.name, url_for(location) %>
</li>
<% end %>
</ul>
我是尽量协会所有model.Added外键关联表的表,我home.html.erb如何显示树形视图? –