Как получить более хороший хэш params, возвращенный моей немодельной формой? - PullRequest
0 голосов
/ 07 апреля 2011

Я пытаюсь настроить немодельную форму для создания отчета на основе поисковых запросов и борюсь с синтаксисом помощников по форме.Вот упрощенная версия (одна из многих попыток), которая демонстрирует мою проблему:

<%= 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 %>

Когда эта форма отправляется, хэш параметров, который в результате выглядит следующим образом;

{"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].

Я понятия не имею, как установитьформа для достижения этого.

Кроме того, поскольку я не могу получить доступ к дате, которая в настоящее время возвращается с параметрами [: report] [: method_date].Нужно ли обрабатывать это в контроллере, чтобы собрать дату из компонентов?Конечно, есть способ Rails позаботиться об этом (это, конечно, не проблема при использовании формы на основе модели)?

1 Ответ

2 голосов
/ 07 апреля 2011

вам нужно установить опцию html: имя для selet_tag

<%= 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 %>
...