2009-08-16 57 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. 
}); 
相关问题