0

ページに 2 つの form_tag があるとします。それぞれ次のようになります。

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

だから私はそれがparamsでどのように行われるかを知っていますが、2つのフォームがあり、各フォームが同じ名前のフィールドを持っている場合、結果のparams配列で名前空間を並べ替えるにはどうすればよいですか?また、どのようにアクセスしますか?

4

1 に答える 1

3

2 つのフォームを区別するには、フィールドに異なる名前を作成する必要があります。

最も一般的な方法は、次のようにフィールドを「名前空間」にネストすることです。

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

そして2番目のフォーム:

  = 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 に答える