繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM