2009-08-16 25 views
0

Rails控制器接收散列中的POST值,它沒有自然順序,但對於我的應用程序,我需要它,因爲用戶可以通過Javascript更改表單字段的順序。 (通過jQuery的Sortable)是否有可能在Rails控制器中檢索POSTed值的原始順序?

是否有任何其他方式來檢索其原始順序中發佈的值?

+0

你可以發佈訂單作爲額外的參數,理論上你可能能夠猴子修補它,所以它使用了一個有序的散列,但有很多合併正在進行...... – 2009-08-16 10:03:44

+1

是否有一些標準要求值需要按照它們出現的順序發佈?如果有,瀏覽器是否關心? – innaM 2009-08-16 10:27:26

+0

Manni,問題在於DR想要維護訂單,因爲他/她想知道用戶將事情分類的順序。序列化是正確的方法。 – semanticart 2009-08-16 15:49:24

回答

1

除非你解析原始的後期數據,否則它可能會在散列。由於哈希不是有序的,所以你被搞砸了。

儘管如此,通過使用Rails的參數魔法,您可以將它作爲數組傳遞。例如。 「富[] =酒吧&富[] =巴茲&富= MAZ」(同樣適用於post數據)會給你["bar", "baz", "maz"]params[:foo]

2

使用jQuery排序,你只需要或者

  1. 連載通過您的jQuery $可分選到每次更改後或在您的形式的onsubmit部分隱藏的輸入
  2. 序列上提交排序。員額

這將爲您提供像這樣設置了一個param :{"item"=>["2", "3", "4", "5", "6", "1", "7"]}

一些例子讓你開始:

例的onsubmit(在這種情況下,您的訂單是序列化到PARAMS [:serialized_form]):

<FORM ACTION=".." NAME="testform" 
    onSubmit="$('#serialized_form').value = $('#sortable').sortable('serialize')"> 
    <INPUT TYPE="hidden" id="serialized_form" value=""> 
    ... 

例子$。員額:

$.post("/", $('#sortable').sortable('serialize'), function(ret){ 
    // whatever you want to do with the outcome here. 
}); 
相關問題