我需要从我的Rails 5嵌套路由创建一个下拉侧边栏导航菜单。我有4个模型 - 位置,类别,子类别和产品。我们目前有4个位置,因此我在application_controller中创建了一个查询,以默认我们公司位置圣地亚哥的路径。
从那里,我基于位置查询创建了一个类别查询。一切都很好,我可以迭代并将结果打印到视图中,类别作为下拉列表的标题。我需要在他们所属的类别下拉列表中显示子类别,但我一直收到一个未定义的错误。
我知道我拥有的嵌套路线在大多数情况下并不理想,但是这个网站需要绝对定义的搜索引擎排名网址...只是在你评论它们之前就知道了。
application_controller.rb
class ApplicationController < ActionController::Base
...
before_action :load_vendors
def load_vendors
@location = Location.find_by_name('San Diego')
@category = @location.categories
@subcategory = @category.subcategories
end
...
的routes.rb
resources :locations do
resources :categories, path: '' do
resources :subcategories, path: '' do
resources :products, path: ''
end
end
end
_sidebar.html.rb
<div id="ss_menu">
<% @category.each do |c| %>
<div class="ss_button"><%= c.name %></div>
<div class="ss_content">
<ul>
<% @subcategory.each do |s| %>
<li>
<a href="">
<%= s.name %>
</a>
</li>
<% end %>
</ul>
</div>
<% end %>
</div>
首先,你忘了添加erb扩展_sidebar.html.erb
。此外,这是视图应该是这样的:
<div id="ss_menu">
<% @categories.each do |category| %>
<div class="ss_button"><%= category.name %></div>
<div class="ss_content">
<ul>
<% category.subcategories.each do |subcategory| %>
<li>
<%= link_to subcategory.name, ... %>
</li>
<% end %>
</ul>
</div>
<% end %>
</div>
你用什么类型的关联类型?