繁体   English   中英

如何获得由我的非模型表单返回的更好的params哈希?

[英]How do I get a nicer params hash returned by my non-model form?

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

<%= 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方式可以解决这个问题(使用基于模型的表格时肯定不是问题)?

你需要设置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 %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM