2015-04-06 35 views
0

我們需要傳遞(可能是幾千人)的路徑在軌大陣的id:如何將大數組傳遞給Rails路徑?

rails_path(ids: large_id_array) 

還有就是Request-URI Too Large錯誤發展彈出合格2700個ID的數組。將數組傳遞給導軌路徑時的大小限制是多少?有沒有辦法繞過尺寸限制?謝謝。

+0

沒有用Ruby或Rails的限制,該限制通常是你正在運行進程的服務器...更大的服務器可以處理更多的請求......你爲什麼需要將這麼多數據傳遞給數組?我們可以看到一個問題的例子嗎? – abbott567

+0

abbott567,我們正試圖找到一種方法來將當前頁面導出爲帶有自定義操作的csv文件。這就是爲什麼我們需要將所有ID傳遞給自定義動作,有時候ID可能很多。 – user938363

回答

4

,只要你想用post數據(你試圖通過GET PARAMS)您可以在路徑中傳遞儘可能多的ARGS:

  • GET PARAMS可見在URL(例如:/users?is_admin=trueparams[:is_admin]在這種情況下,等於"true"
  • POST PARAMS在URL中不可見(例如,當您填寫用戶名/密碼字段後單擊「登錄」按鈕時,出於明顯的安全原因,您不需要想要打印URL中的字段)

在你的情況,你應該通過ID作爲post數據。如何在請求中發送POST參數?只要問link_to使用POST方法而不是GET

link_to 'Click here!', rails_path(ids: large_array_of_ids), method: :post 

另一種方式來創建一個POST鏈接:

# HAML code 
= form_tag rails_path(ids: large_array_of_ids) do 
    = submit_tag 'Click here!' 

# ERB code 
<%= form_tag rails_path(ids: large_array_of_ids) do %> 
    <%= submit_tag 'Click here!' %> 
<% end %> 
+0

MrYooshiji,添加方法後的錯誤是一樣的::post。 webrick web服務器(rails development)的限制是什麼? – user938363

+0

不,這不是問題。您正嘗試訪問超過允許長度的網址。我會用'form_tag'方法在一秒內更新我的答案 – MrYoshiji

+0

link_to正是我們用來在表單上嵌入CSV鏈接的東西。 – user938363