2016-11-04 6 views
0

Ich erstellte eine Ansicht zum Filtern und Sortieren activities Tabelle auf der index Aktion. Parameter für Felder, die nach Array sortiert werden sollen und die Anforderung an params[:sort] (== ["created_at"], zum Beispiel) übergeben werden sollen.Ruby on rails: hidden_field_tag ​​Array in String in Parameter konvertieren

das funktioniert und meine params nach erfolgreicher Anfrage lautet:

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

Dann habe ich Dropbox für Filtertabelle und hidden_field_tag ​​sortierbar params passieren wie folgt aus:

=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 

Aber hidden_field_tag zum Sortieren konvertieren Anfangs Wert params[:sort] == ["created_at"] zu einfach "created_at" und ich habe keine Ahnung warum. Das ist eine Frage. Was ich in html erhalten:

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

nehmen 'name = "sort []"' und prüfen Sie, '' – Sravan

+0

Danke! Es funktioniert. Aber können Sie erklären, was dort passiert? ... weil ich einen Blick in Docs auf hidden_field_tag ​​Methode und finde nichts, was Konvertieren von Argumenten. – fomkin

+0

Wenn Sie ein Array von Werten in eine Eingabe aufnehmen wollen, sollten Sie zu html sagen, dass es Array-Werte akzeptiert, also sagt 'name =" sort [] "' dem Dom, dass er Array-Werte annehmen soll. – Sravan

Antwort

0

Da Sie {"direction"=>"desc","sort"=>["created_at"], "controller... etc } haben, hier, sort has an array as value

Wenn Sie array values in eine input nehmen wollen, sollten Sie sagen HTML, dass es Array-Werte akzeptiert, so name="sort[]" den Dom erzählt, dass es sollte Array Werte

ändern nehmen,

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

zu,

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

+0

Also all diese Magie irgendwo in der HTML-Spezifikation definiert, nicht in den Rails, oder? – fomkin

+0

ja das gehört nicht zu schienen. – Sravan