0

我想在我的部分中生成一个选项<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页面?

4

2 回答 2

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

供应商.rb

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

品牌.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>

If you want to load all Vendors into your application_controller, maybe you can use before_filter :load_vendors

 def load_vendors
  @vendors = Vendor.all
 end
于 2013-03-12T02:44:07.900 回答
0

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

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

我不熟悉简单的形式,但 railscasts 也有一个很好的如何使用简单的形式。

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

于 2013-03-12T02:13:52.123 回答