在我的轨道表单中,我正在使用多选标签
代码看起来像
<%= select_tag '[mycontroller][users]', @users, { :multiple => true, :size => 7} %>
<p><%= submit_tag l(:button_apply)%></p>
在表单提交上传递的参数是
mycontroller[users][]=79&mycontroller[users][]=80&commit=Apply
现在在我的视图文件中,当我检索参数时,它们正在转换为字符串所以我得到 [79,80] 被转换为"7980"
获取用户参数的代码如下所示
users = params[:mycontroller][:users] unless params[:mycontroller].nil?
编辑:
我想的问题是"#{}"将数组转换为字符串。 即使 <%= %> 也会调用to_s
那么如何覆盖它呢?这样to_s将返回"79,80"而不是"7980"
我错过了什么?请发表评论?
闷闷不乐。
to_s
似乎非常严厉。
您可以遍历单独显示每个元素的数组(如果您为每个元素呈现一些复杂的东西,通常更具可读性,或者如果您只想用逗号分隔数组元素,请使用类似 my_array.join(',')
的东西。
尝试调用 array.join(","),并且 [79,80] 的数组应该变成类似 "79,89" 的字符串
拼音连接方法
我不知道 Array.join 返回字符串,所以我试图以自己的方式解决它。这可能效率不高/有效,但这是一种解决方法。
arr = [79,80]
a =arr.inject(0){|op,i| op.to_s + i.to_s + ","}.to_s
a[1,a.length-2] # "79,80"