Rails / Ruby Over数组对象的to_s

时间:2012-04-07 09:17:37

标签: ruby-on-rails ruby

在我的rails表格中,我使用的是多选标签

代码看起来像

  <%= select_tag '[mycontroller][users]', @users, { :multiple => true, :size => 7} %>
  <p><%= submit_tag l(:button_apply)%></p>

传递的表单提交参数是

 mycontroller[users][]=79&mycontroller[users][]=80&commit=Apply

现在在我的视图文件中,当我检索params时,它们被转换为字符串 所以我[79,80]被转换为“7980”

获取用户参数的代码看起来像

users =  params[:mycontroller][:users] unless params[:mycontroller].nil? 

修改

问题我想是“#{}”将数组转换为字符串。偶数&lt;%=%&gt;将调用to_s

那么如何覆盖呢?因此to_s将返回“79,80”而不是“7980”

我缺少什么? 请评论?

日Thnx。

3 个答案:

答案 0 :(得分:3)

覆盖to_s似乎非常沉重。

您可以单独遍历显示每个元素的数组(如果您为每个元素呈现复杂的内容,则通常更具可读性;如果您只想用逗号分隔数组元素,则可以使用类似my_array.join(',')的内容。< / p>

答案 1 :(得分:1)

尝试调用array.join(“,”)并且[79,80]的数组应该变成类似“79,89”的字符串

Ruby Join Method

答案 2 :(得分:0)

我不知道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"