Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何创建在模型实例之间切换的表单?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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

Ruby on rails 如何创建在模型实例之间切换的表单?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个模型、产品,在该模型的“显示”视图中,我希望有一个选择框,以便用户能够查看不同的产品。因此,如果用户正在查看“产品1”页面,他们可以从选择框中选择“产品2”并查看该产品 下面是我用来创建此选择框的代码: <%= form_tag({:controller => "products", :action => "show"}, :method => :get) do %> <%= select_tag :product_id, options_from_c

我有一个模型、产品,在该模型的“显示”视图中,我希望有一个选择框,以便用户能够查看不同的产品。因此,如果用户正在查看“产品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' %>

如果您可以将代码发布到ProductsController上以供展示,它将进一步澄清问题


要用于“显示”正确产品的id由params[:product_id]传递。因此,您应该在ProductsController中使用它,一个简单的方法是检查表单是否传递了params[:product_id],如果是,则使用它代替params[:id]:

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

我在show action中没有任何代码,它只是直接进入视图……您的show action至少应该有以下内容:`def show@product=product.find(params[:id])end`除非您使用的是一个自动为您定义@product的gem my bad-忘记了我正在使用的before过滤器。现在它被添加到我原来的帖子中。
@product = Product.find(params[:id])
    rescue ActiveRecord::RecordNotFound
    flash[:alert] = 'The product you were looking for could not be found'
    redirect_to products_path
if params[:product_id]
   @product = Product.find(params[:product_id])
else
   @product = Product.find(params[:id])
end