0

我正在尝试设置一个非模型表单来生成基于搜索查询的报告,并且正在努力使用表单助手的语法。这是演示我的问题的简化版本(许多尝试之一):

<%= 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 选项:名称

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