是否可以在Rails控制器中检索POSTed值的原始顺序?

时间:2009-08-16 09:54:22

标签: ruby-on-rails

Rails控制器在散列中接收POST值,该散列没有自然顺序,但对于我的应用程序,我需要它,因为用户可以通过Javascript更改表单字段的顺序。 (通过jQuery排序)

有没有其他方法可以检索原始排序中的已发布值?

2 个答案:

答案 0 :(得分:2)

使用jQuery sortable,你只需要

  1. 在每次更改后或在表单的onSubmit部分将序列化序列化为隐藏的输入
  2. 通过jQuery $ .post
  3. 序列化可提交的sortable

    这将为您提供如下的参数:{"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:

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

答案 1 :(得分:1)

除非你解析原始的帖子数据,否则它可能会在哈希中。由于哈希没有订购,你就搞砸了。

你可以将它作为一个数组传递,但是,通过利用Rails的参数魔法保持顺序。例如。 “foo [] = bar&amp; foo [] = baz&amp; foo = maz”(同样适用于POST参数)会为["bar", "baz", "maz"]提供params[:foo]