如何在我的`_navigation.html.erb`中动态生成一个选择菜单,最好是使用simple_form?

时间:2013-03-12 00:25:32

标签: ruby-on-rails ruby-on-rails-3 simple-form

我想在<select>部分中生成Vendor_navigation.html.erb个选项,这些选项会显示在每个页面上。

这是我想要制作的HTML:

<form>
 <select>
    <option value="">Browse by Store</option>           
    <option value="Apple">Apple</option>
    <option value="Deisel">Deisel</option>
    <option value="NIke">Nike </option>
 </select>
</form>

然后,当有人选择供应商时,它会将它们等同于vendors_path(@vendor)。如果我试图在常规的form_partial中这样做,我会做一些像:

<%= simple_form_for(@product) do |f| %>
    <%= f.association :vendors %>
<% end %>

但是......然后我会声明某种方式让@product在控制器中处理,该控制器管理渲染此表单的视图。

我如何在/layouts/_navigation.html.erb

中执行此操作

并且......如何生成链接功能,当他们选择所需的vendor时,它会自动将它们重定向到vendor/:id页面?

2 个答案:

答案 0 :(得分:2)

我不明白您为什么要使用表单来构建这些链接,以及为什么要将这些链接与您的应用程序控制器一起使用。如果您想更改每个产品页面显示的链接,您可以这样做:

<ul class="nav nav-pills">
 <li class="dropdown">
  <a class="dropdown-toggle"
   data-toggle="dropdown"
   href="#">
   Navigation with Vendors by Product
     <b class="caret"></b>
  </a>
<ul class="dropdown-menu">
  <% @product.vendors.each do |vendor| %>
  <li><%= link_to vendor.name, vendor %></li>
  <%end%>
 </ul>
 </li>
</ul>

将此部分用于展示视图产品。

假设这些型号: product.rb

has_many :brands
has_many :vendors, :through => :brands

vendor.rb

has_many :brands
has_many :products, :through => :brands

brand.rb

belongs_to :product
belongs_to :vendor

如果你只需要一个包含所有供应商的部分菜单,你也可以这样做:

<ul class="nav nav-pills">
  <li class="dropdown">
<a class="dropdown-toggle"
   data-toggle="dropdown"
   href="#">
    General Navigation Vendors
    <b class="caret"></b>
  </a>
<ul class="dropdown-menu">
  <% Vendor.all.each do |vendor| %>
  <li><%= link_to vendor.name, vendor %></li>
  <%end%>
</ul>

    

如果要将所有供应商加载到application_controller中,也许可以使用before_filter:load_vendors

 def load_vendors
  @vendors = Vendor.all
 end

答案 1 :(得分:0)

将您的控制器代码放入application_controller.rb,然后在您的views文件夹中创建一个名为application的文件夹,并将您的部分文件放在其中。

http://railscasts.com/episodes/269-template-inheritance

我不熟悉简单的表单,但是railscasts也很好用,如何使用简单的表单。

http://railscasts.com/episodes/234-simple-form-revised