2016-11-04 50 views
0

我创建了一个视图,用于对index动作进行筛选和排序activities表。要排序的字段的参数设置为数组并通过params[:sort](例如== ["created_at"])传递通过请求来请求。Ruby on rails:hidden_​​field_tag将数组转换为参数中的字符串

,成功的请求之后的作品和我的params为:

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

然后,我添加了过滤表和hidden_​​field_tag Dropbox的传递排序PARAMS这样的:

=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

采取'名称= “排序[]”'和检查,'' – Sravan

+0

谢谢!它可以工作,但是你能解释那里发生了什么吗?......因为我查看了有关hidden_​​field_tag方法的文档,并没有发现什么是转换参数。 – fomkin

+0

如果你想将数组的值放入一个输入中,你应该说html接受数组的值,所以'name =“sort []”'告诉Dom它应该接受数组值。 – Sravan

回答

0

既然你有{"direction"=>"desc","sort"=>["created_at"], "controller... etc },在这里,sort has an array as value

如果你想利用array valuesinput,你应该说的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