2013-03-29 24 views
0

通過GET在我的表單中提交數據的問題是URL長度被超出。所以我轉而發佈。儘管方法作爲職位,在link_to params得到添加到URL?

而不是像使用will_paginate這樣的寶石,我會嘗試並通過POST調用失敗,我正在做這樣的事情。

<%= link_to "Next", {:controller => "orders", :action => "advanced_search", :method => :post, :page => params[:page].to_i+1, :filters => params[:filters], :limit => params[:limit]}%> 

問題是,儘管該方法是後,它仍然合併PARAMS本身的網址。我基本上希望它再次提交表單,並帶有新的頁面參數。但沒有填充url的參數。

我真的很高興,如果有人可以幫助我這個。

UPDATE:該網址看起來像

http://localhost:3000/orders/advanced_search?filters%5Bapproved_between%5D=&filters%5Bcreated_between%5D=&filters%5Border_id%5D=0111T20822130100%0D%0AO11221D208211501118%0D%0AO11D208211501118%0D%0AO11T20822130100%0D%0AO121D208211501118%0D%0AO1221D208211501118%0D%0AO1D208211501118%0D%0AO1T20822140003&filters%5Bproduct_id%5D=&filters%5Bshipped_between%5D=&filters%5Bsku%5D=&method=post&limit=50&page=2 

我修剪了中心的URL。瀏覽器拋出錯誤 - 請求 - URI太大

更新2:我現在正在使用這不工作。 (我很冒昧地說,它會在正確測試之前起作用)。

<%= form_tag :controller=> "orders", :action => "advanced_search", :new_params => params.merge(:page => params[:page].to_i+1) do %> 
      <%= submit_tag 'Next' %> 
    <% end %> 

雖然這會發送new_params,但它仍會更改URL,儘管表單方法爲POST。它將數據封裝在表單操作鏈接中,作爲orders/advanced_search?new_params .............. URGH !!!!

+0

做的網址是什麼樣子? – jason328

+0

@ jason328 - 只需更新問題。看看其他參數的url的開始/結束。 –

回答

2

:method => :post添加到鏈接不會使其成爲發佈請求。它只是添加一個名爲method的GET變量。

link_to不會創建POST鏈接。 link_to創建了<a>元素,除非您在那裏使用JavaScript,否則瀏覽器將執行GET請求。

爲了使用POST請求,您必須使用表單。

我會嘗試看看是否有另一種方式比傳遞所有這些變量。能夠將鏈接粘貼/書籤到頁面總是很好的。

編輯:

嘗試這樣的事情

<%= form_for :orders, :url => order_advanced_search_path do |form| %> 
    <%= form.hidden :filters, params[:filters] %> 
    <%= form.hidden :page, params[:page].to_i + 1 %> 
    <%= form.hidden :limit, params[:limit] %> 
    <%= form.submit "Next" %> 
<% end %> 
+0

以爲:(這與button_to非常相似,我只想更新我的頁面參數,並在用戶下次點擊時調用控制器。你會怎麼做? –

+0

如果沒有辦法通過較少的變量,然後使用一個表格 – gmalette

+0

爲什麼-1如果我可能會問? – gmalette

相關問題