![](/img/trans.png)
[英]How to list instances of a model and have a form to create an instance on the same view?
[英]How to create form that switches between instances of a model?
我有一个模型,产品,并且在此模型的显示视图上,我希望有一个选择框供用户查看其他产品。 因此,如果用户正在查看“产品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' %>
但这是行不通的。 我可以选择另一种产品,然后单击“转到”,但这只会用于同一产品,而不是我在框中选择的产品。
我在这里做错了什么?
基本上,我试图使用选择框而不是像这样的东西:
<% Product.all.each do |p| %>
<%= link_to p.title, p %>
<% end %>
这是我要在控制器中执行show动作的内容:
@product = Product.find(params[:id])
rescue ActiveRecord::RecordNotFound
flash[:alert] = 'The product you were looking for could not be found'
redirect_to products_path
如果您可以将代码发布到Show的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.