0

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

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

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

4

1 回答 1

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]

请记住,您不能同时提交两种表格。

于 2012-11-24T21:28:10.357 回答