2011-05-18 32 views
1

我得到一個列表頁面,並通過鏈接過濾項目得到參數(我可以選擇多個鏈接,所以查詢會像"?param1=value1&param2=value2")。而且我有文本字段進行過濾,所以我做了一個表格:Rails表單:提交表單後如何不重寫現有的get參數?

<form> 
    <%= text_field_tag :zip, params[:zip] %> 
    <%= submit_tag 'OK', :name => nil %> 
</form> 

但是,當我提交,文本字段PARAM替換現有查詢參數。那麼,如何讓文本字段的值添加到查詢中,而不是取而代之呢?

+0

或如何將新的GET參數添加到現有參數。 – 2012-03-30 19:42:02

回答

0

Rails 3?

<%= form_tag your_path(params.except(:controller, :action)), :method => :get do %> 
    <%= text_field_tag :zip, params[:zip] %> 
    <%= submit_tag 'OK', :name => nil %> 
<% end %> 
+0

它的工作原理,但我需要GET方法。 – 2011-05-18 18:28:35

+0

這樣設置方法就像get。 – fl00r 2011-05-18 18:37:35

+0

我也試過:不工作。這樣的查詢看起來像這樣: .action = index&controller = controllername&param1 = value?method = get – 2011-05-18 18:44:42

1

由於我只是在Rails 4中處理這個問題,我以爲我會分享我的解決方案。 我的頁面加載了一個sport_id參數,當用戶指定一個排序順序時,我希望它提交一個GET請求給page.url/event?sport_id = 1 & sortby =查看者,但它不會保留sport_id參數直到我的形式加入的隱藏字段標籤像這樣:

<%= hidden_field_tag :sport_id, params[:sport_id] %> 

此解決方案並提交一個空sport_id參數如果該參數在原來的請​​求是不是,但,很容易通過在封裝隱藏字段防止<%if params [:sport_id] .present? %>條件。