我想在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"
答案 0 :(得分:0)
根据我的经验,在表单中使用“隐藏”输入标记是通常的方法:
http://apidock.com/rails/ActionView/Helpers/FormTagHelper/hidden_field_tag