假设我在页面上有两个form_tag,每个都像这样:
= form_tag({:action => :import}, :multipart => true) do
= file_field_tag 'file'
= submit_tag 'Import', name: 'import_this'
所以我知道这在参数中是如何实现的,但是如果我有两个表单并且每个表单都有相同的名称字段,我如何在生成的参数数组中对它们进行命名空间排序以及如何访问它们?
为了区分这两种形式,您需要为字段创建不同的名称。
最常见的做法是将字段嵌套到"命名空间"中,如下所示:
= 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]
请记住,您不能同时提交两个表单。