2009-08-16 3 views
0

Railsコントローラは自然な順序を持たないハッシュでPOST値を受け取りますが、アプリケーションではJavascriptを使用してフォームフィールドの順序を変更できるため、必要になります。 (jQueryからソート可能)RailsコントローラでPOSTされた値の元の順序を取得することは可能ですか?

投稿された値を元の順序で取り出す方法はありますか?

+0

追加のパラメータとして注文することはできますが、理論的にはモンキーパッチを適用して順序付けられたハッシュを使用できるようになるかもしれませんが、多くのマージが行われています... –

+1

値が表示される順序で掲載する必要があることを要求する標準がありますか?そしてもしあれば、ブラウザは気にしますか? – innaM

+0

Manniさん、問題は、DRはユーザーがどのような順序で物事を分類したのかを知りたいからです。シリアライズは正しいアプローチです。 – semanticart

答えて

1

未処理の投稿データを解析しない限り、おそらくはハッシュ形式になっている可能性があります。そして、ハッシュは注文されていないので、あなたはうんざりです。

Railsのparams magicsを使用して、配列を渡しても順序を維持できます。例えば。 "FOO [] =バー&のfoo [] =バズ& FOO = MAZは"(同じがPOSTのparamsのために行く)あなたはjQueryのソート可能なを使用してparams[:foo]

2

ため["bar", "baz", "maz"]を与える、あなただけのいずれか

  1. シリアライズする必要がありますお使いのjQueryの$これはそうのようなPARAMを提供します

を.post経由

  • 各変更後、またはフォームのonSubmit検証一部の隠し入力にソート可能に提出する上でソート可能にシリアライズ:{"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. 
    }); 
    
  • 関連する問題