簡體   English   中英

Rails/Ruby Over ride to_s 數組 object

[英]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”這樣的字符串

Ruby 加入方式

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM