2016-11-04 15 views
0

indexアクションでactivitiesテーブルをフィルタリングしてソートするためのビューを作成しました。並べ替えるフィールドのパラメータは配列に設定され、要求にはスクロール要求がparams[:sort](たとえば== ["created_at"])で渡されます。要求が成功した作品と私のparamsだRuby on rails:hidden_​​field_tag配列を配列内の文字列に変換する

は次のとおりです。

{"direction"=>"desc","sort"=>["created_at"], "controller... etc } 

それから私は、そのようなソート可能なのparamsを渡すために、フィルタリングテーブルとhidden_​​field_tagのためのDropboxを追加しました:最初の転換ソートするための

=form_tag actitvites_path, method: "get" 
=radio_button_tag... 
=radio_button_tag... 
=select_tag... 
=hidden_field_tag :direction, params[:direction] 
=hidden_field_tag :sort, params[:sort] 
=submit_tag "Filter", name: nil 

しかしhidden_field_tagを値params[:sort] == ["created_at"]を簡潔に"created_at"にすると、なぜ私には分かりません。それは質問です。私は、HTMLの取得:

<input type="hidden" name="direction" id="direction" value="asc"> 
<input type="hidden" name="sort" id="sort" value="created_at"> 
+0

は '名= "ソート[]"'と、チェック 'の

、=」 created_at "> ' – Sravan

+0

ありがとう!それはうまくいきますが、そこに何が起こっているのか説明できますか?hidden_​​field_tagメソッドのドキュメントを見て、argsを変換しているものは何も見つかりません。 – fomkin

+0

値の配列を入力にしたい場合は、htmlに配列の値を受け入れるようにする必要があります。 'name =" sort [] "'は、配列の値を取るべきであることをDomに知らせます。回答として – Sravan

答えて

0

あなたはinputarray valuesを取りたい場合は、{"direction"=>"desc","sort"=>["created_at"], "controller... etc }、ここでは、sort has an array as value

、あなたはそれが配列の値を受け入れることをHTMLに言うので、name="sort[]"必要がありますしているので、それは、配列が

変更値取るべきであるとドムを告げる

<input type="hidden" name="sort" id="sort" value="created_at">

<input type="hidden" name="sort[]" id="sort" value="created_at">

+0

だから、この魔法はすべてhtml仕様ではなく、Railsで定義されているのですか? – fomkin

+0

はいこれはレールに属しません。 – Sravan

関連する問題