0

在我的 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

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

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

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

编辑

我想问题是“#{}”将数组转换为字符串。甚至 <%= %> 都会调用 to_s

那么如何覆盖它呢?这样 to_​​s 将返回“79,80”而不是“7980”

我错过了什么?请给点意见?

谢谢。

4

3 回答 3

3

压倒一切to_s似乎非常沉重。

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

于 2012-04-07T09:33:22.677 回答
1

尝试调用 array.join(",") 并且 [79,80] 的数组应该变成像 "79,89" 这样的字符串

Ruby 连接方法

于 2012-04-07T09:35:02.207 回答
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"
于 2012-04-07T09:43:59.700 回答