[英]Rails/Ruby Over ride to_s for array object
在我的 Rails 表单中,我使用了多个 select 标签
代码看起来像
<%= 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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.