一页上有多个form_tags

时间:2012-11-24 20:58:52

标签: ruby-on-rails ruby forms

假设我在页面上有两个form_tag,每个都是这样的:

  = form_tag({:action => :import}, :multipart => true) do
    = file_field_tag 'file'
    = submit_tag 'Import', name: 'import_this'

所以我知道在params中是如何实现的,但是如果我有两个表单并且每个表单都有相同的名称字段,那么我如何在结果的params数组中命名它们以及如何访问它们?

1 个答案:

答案 0 :(得分:3)

为了区分这两种形式,您需要为这些字段创建不同的名称。

最常见的做法是将字段嵌套到“命名空间”中,如下所示:

  = form_tag({:action => :import}, :multipart => true) do
    = file_field_tag 'form1[file]'
    = submit_tag 'Import', name: 'form1[import_this]'

第二种形式:

  = form_tag({:action => :import}, :multipart => true) do
    = file_field_tag 'form2[file]'
    = submit_tag 'Import', name: 'form2[import_this]'

然后在控制器中,您可以像这样访问它们:

params[:form1][:file]

params[:form2][:file]

请记住,您无法同时提交这两个表单。