2012-07-15 38 views
1

我有一個旁邊有複選框的項目的巨大列表,允許用戶選擇他們想要打印的項目。Rails:通過GET或POST獲取ID列表?

當用戶選擇了一堆物品,並點擊打印,我送與查詢字符串建立了代碼的GET請求:

/registration_codes.pdf?ids[]=1&ids[]=5&ids[]=18... 

的問題是,當這變得太它會拋出一個異常,說查詢字符串太長。另外,它該死的醜陋。

顯然這是一個GET問題,但如果我遵循'RESTful'規則,POST,甚至PUT或DELETE在這裏沒有意義。

任何人都可以建議一個更好的方式來處理這個雖然RESTful,或者我應該違反規則,並做一個POST?

+0

使用CSV?所以'ids = 1,2,3' – Amit 2012-07-15 09:21:15

+0

這可以從一個窗體完成而不使用JavaScript? – Jordan 2012-07-15 09:22:15

+1

沒有。如果你正在提交表單,那麼POST是不是要走的路? – Amit 2012-07-15 09:29:14

回答

0

明顯:

  • 更改 「IDS [] =」 到 「I =」 - 它應該已經爲你節省+ - 50%空間。
  • 使用不同的編碼ids[]=1,5,18,...

而且看來,如果你有很多的複選框......也許你正在做的事情是錯誤的。

還有許多其他壓縮數據的方法:以十六進制或base64表示法編碼的位圖。甚至疼痛bitmap可以充分且具有確定性的長度:

id=1000100000000010000... 

同爲十六進制

id=880fa0... 
+0

你是對的,有很多複選框是古怪的。可選的jQuery UI有助於一次選擇大量項目,但也許有更好的方法來做到這一點。 – Jordan 2012-07-15 09:37:53

+0

看看你是否有1個複選框,這意味着其他20個人被選中......比你不需要通過其他20個人。 – Artyom 2012-07-15 10:01:16

+0

它們都是單個項目,意味着用戶可以選擇任何項目的組合 - 它們都不相互關聯。我認爲你是對的,我應該看看另一種選擇這些項目的方式。在進入打印階段之前,我正在考慮標記或標記項目。 如果有人有任何其他想法,仍然有興趣聽到。 – Jordan 2012-07-15 10:26:58