我想在<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
页面?
答案 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也很好用,如何使用简单的表单。