如何创建在模型实例之间切换的表单?

时间:2011-11-15 19:52:37

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

我有一个型号,产品,在这个型号的展示视图中,我希望有一个选择框,供用户能够查看不同的产品。因此,如果用户正在查看“产品1”页面,他们可以从选择框中选择“产品2”并查看该产品。

以下是我用来创建此选择框的代码:

<%= form_tag({:controller => "products", :action => "show"}, :method => :get) do %>
<%= select_tag :product_id, options_from_collection_for_select(Product.all, :id, :title) %>
<%= submit_tag 'Go' %>

但这不起作用。我可以选择不同的产品,然后单击Go,但它只是转到相同的产品,而不是我在框中选择的产品。

我在这里做错了什么?

基本上,我正在尝试使用选择框而不是这样的东西:

<% Product.all.each do |p| %>
    <%= link_to p.title, p %>
<% end %>

这是我在控制器中显示动作的内容:

@product = Product.find(params[:id])
    rescue ActiveRecord::RecordNotFound
    flash[:alert] = 'The product you were looking for could not be found'
    redirect_to products_path

2 个答案:

答案 0 :(得分:0)

如果您可以在ProductsController for Show上发布您的代码,那么可以更明确地说明这一点。

您要用于“显示”正确产品的ID由params [:product_id]传递。所以你应该在ProductsController中使用它

答案 1 :(得分:0)

一个简单的方法是检查你的表单是否传递了params [:product_id],如果它然后基本上使用而不是params [:id]:

if params[:product_id]
   @product = Product.find(params[:product_id])
else
   @product = Product.find(params[:id])
end