該數組轉換爲逗號分隔的字符串就是一個例子如何使用Ruby
(Category.find(:all,:select => "name").collect {|c| c.name}).join(', ')
它產生:
"Category1, Category2"
有另一種更高效+清潔的方式做到這一點?
該數組轉換爲逗號分隔的字符串就是一個例子如何使用Ruby
(Category.find(:all,:select => "name").collect {|c| c.name}).join(', ')
它產生:
"Category1, Category2"
有另一種更高效+清潔的方式做到這一點?
問題是你試圖加入對象的屬性而不是對象本身。收集是我知道這樣做的最好方式。但我會用to_sentence
方法Rails提供轉換陣列就像這樣:
Category.find(:all,:select => "name").collect { |c| c.name }.to_sentence
不,你的解決方案似乎完全OK。
您只能在join
之前省略括號。
我對Rails完全陌生,所以請認真對待這個觀點,但我認爲join和to_sentence之間的選擇取決於用例:後者似乎更適合於人類可使用的顯示器,可能會出現在說)一個實際的句子。默認的to_sentence行爲(至少這是我觀察到的)是使用逗號,除了最後一個分隔符,它使用單詞'和'。對於我的用例,我提供了一個需要逗號的腳本,而不是'和'。所以加入','效果很好。 – 2012-02-08 18:40:21
Array.pluck
將把它放在你的字符串數組中。當你不需要它們時,它不會產生Ruby ActiveRecord對象。
Category.pluck(:name).join(", ")
Category.pluck(:name).to_sentence
'Category.all(:選擇=>:名稱).MAP(:名稱).to_sentence' – 2010-11-09 15:43:24
更妙的是,拉斯! – jxpx777 2010-11-09 15:49:32
謝謝你們,這是完美的。 – csanz 2010-11-09 16:00:22