我有一个简单的表格,如:
= form_tag history_path(params), :method => :get do
= radio_button_tag :history_id, @history.id, true
History
%br
= submit_tag "Get History", class: "btn generate"
现在, params 有一些额外的信息,例如{visit_id: 1, company_id: 32}
即使我检查表单,我也会将操作视为:
<form action="/history?visit_id=1&company_id=32" accept-charset="UTF-8" method="get">
但是,点击提交后,参数永远不会通过,我只会传递以下参数(在服务器日志中):
Parameters: {"utf8"=>"✓", "history_id"=>"939", "commit"=>"Get History"}
修改
我知道我可以将它们添加到hidden_field_tag
,但是参数可以很多,我不能继续添加隐藏的字段。所以,我需要理解为什么上述方法不起作用。
答案 0 :(得分:3)
这不是一个rails问题,它只是html,因为你的表单有get方法,它将替换你在url操作上的所有get变量,只让表单上的那些变量。 你可以把它结合起来,在url中发送get变量,但是将表单作为post,而不是get。 在这种情况下,您有2个选项,使用@Deepak Mahakale发送的解决方案,或将您的表单更改为发布,并在控制器和路由上进行相应的更改。
答案 1 :(得分:2)
尝试将其添加为hidden_field_tag
= form_tag history_path(params), :method => :get do
= hidden_field_tag :visit_id, 1
= hidden_field_tag :company_id, 32
= radio_button_tag :history_id, @history.id, true
History
%br
= submit_tag "Get History", class: "btn generate"
现在您将收到参数中的数据
Parameters: {"utf8"=>"✓", "history_id"=>"939", "visit_id" => "1", "company_id" => "32", "commit"=>"Get History"}