0

検索クエリに基づいてレポートを生成するために非モデルフォームを設定しようとしていますが、フォームヘルパーの構文に苦労しています。これが私の問題を示す簡略化されたバージョン(多くの試みの1つ)です:

<%= form_tag url_for(:action => "show") do %>
  <%= label_tag :procedure %><br />
  <%= select_tag :procedure, options_for_select(['A','B','C']) %><br />
  <%= label_tag :procedure_date %><br />
  <%= date_select :report, :procedure_date  %><br />
  <%= submit_tag :Submit %>
<% end %>

このフォームが送信されると、結果のparamsハッシュは次のようになります。

{"utf8"=>"✓", "authenticity_token"=>"bQ3ILfHtp0qod/cGNr4LDAWzwLdyHMBQ6xyO7+DLXns=",
"procedure"=>"A", "report"=>{"procedure_date(1i)"=>"2011", "procedure_date(2i)"=>"4",
"procedure_date(3i)"=>"7"}, "commit"=>"Submit", "controller"=>"reports", "action"=>"show"}

私が欲しいのは(私が思うに)もっとこのようなものです。

{"utf8"=>"✓", "authenticity_token"=>"bQ3ILfHtp0qod/cGNr4LDAWzwLdyHMBQ6xyO7+DLXns=",
"report"=>{"procedure"=>"A", "procedure_date(1i)"=>"2011", "procedure_date(2i)"=>"4",
"procedure_date(3i)"=>"7"}, "commit"=>"Submit", "controller"=>"reports", "action"=>"show"}

params[:report][:procedure]次に、とで必要な変数にアクセスできますparams[:report][:procedure_date]

これを実現するためにフォームを設定する方法がわかりません。

また、現在、params [:report] [:procedure_date]で返される日付にアクセスできません。コンポーネントから日付を組み立てるために、コントローラーでこれを処理する必要がありますか?確かにこれを処理するRailsの方法があります(モデルベースのフォームを使用する場合は確かに問題ではありません)?

4

1 に答える 1

2

selet_tag の html オプション :name を設定する必要があります

<%= form_tag url_for(:action => "show") do %>
  <%= label_tag :procedure %><br />
  <%= select_tag :procedure, options_for_select(['A','B','C']), {:name => "report[report_procedure]"} %><br />
  <%= label_tag :procedure_date %><br />
  <%= date_select :report, :procedure_date  %><br />
  <%= submit_tag :Submit %>
<% end %>
于 2011-04-07T14:07:06.523 に答える