Rails 5导航菜单来自深层嵌套路线

问题描述 投票:0回答:1

我需要从我的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>
ruby-on-rails ruby-on-rails-5
1个回答
0
投票

首先,你忘了添加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>

你用什么类型的关联类型?

© www.soinside.com 2019 - 2024. All rights reserved.