将URL参数添加到form_tag

时间:2012-10-03 17:12:29

标签: ruby-on-rails ruby-on-rails-3

我想在form_tag中合并网址参数,但我发现我无法决定它们被覆盖时的参数是什么。传递params的目的是提供过滤和排序变量,因此,我希望它们在URL中可见而不是隐藏。

我最接近的就是这样做:

form_tag( :controller => 'assets',:action => 'index', :params => params.merge(:order => 'name'), :method => :get) do

问题是:get方法只是作为另一个参数传递而不是实际上作为方法传递,因此它解析为POST

我也试过以下,但也行不通。

form_tag(params.merge(:order => 'name', :method => :get) do

路径是正确的,但URL params的格式很奇怪,因为您看到param没有&的前缀,但在提交表单时却丢失了。

action="/assets?commit=Filter&order=name&utf8=%E2%9C%93" method="get"

这是覆盖参数的另一个例子。以下代码将生成表单代码的基础元素,但params将被删除。

form_tag(url_for(:order => 'name'), :method => :get) do

基础代码,提交时不会传递参数:

action="/asset_ratings?order=name"

1 个答案:

答案 0 :(得分:0)

根据我的经验,在表单中使用“隐藏”输入标记是通常的方法:

http://apidock.com/rails/ActionView/Helpers/FormTagHelper/hidden_field_tag