2012-02-20 87 views
1

Rails中用於在部分內部創建逗號分隔列表的最優雅方式是什麼?Rails使用逗號分隔數組項目,部分內部使用逗號

我剛剛發現,您可以使用partials遍歷從另一個視圖模板發送的集合。因此,在視圖模板,我有:

<% render @dvd.director %> 

然後在/view/directors/_director.html.erb:

<%= director.director %> 

這實際上確實是這樣的:

@dvd.director.each { |d| puts d.director } 

現在,我知道我可以使用.join像這樣:

<% @dvd.director.map { |t| t.director }.join(", ") %> 

但是由於部分已經遍歷數組中的每個條目,所以我怎樣才能恰當地分開列表,並且最後一個(或一個)最後一個逗號沒有?

很多參賽作品只有一位導演,我只是想分開那些有不止一位導演。我知道我可以手動完成所有這些工作(使用正常的非迭代部分並自己創建.each循環),但是我正在嘗試這樣做,並學習Rails的方式。

謝謝。

編輯

試圖解釋好一點,@ dvd.director返回像ActiveRelation對象,以便:

[#<Director id: 13, director: "Andrew Stanton">, #<Director id: 14, director: "Lee Unkrich">] 

所以我不能只是做@dvd.director.join(', ')

是還有另外一種方法可以獲得非

@dvd.director.each { |dir| dir.director } 

因爲我有同樣的問題,我必須數它們或確保它不是最後一項,然後我在它們之間輸入逗號,或者只提取導演名稱並將它們放入字符串或類似內容中。如果我可以加入,那會很好。

回答

5

如果數組中只有一個元素,Ruby的join方法將不會添加分隔符。

你應該能夠做到爲任意大小的名單如下:

@dvd.director.map(&:director).join(", ") 
+0

太好了,這正是我需要的,謝謝! – kakubei 2012-03-19 13:02:37

+1

如果我已經使用'map(&:director)',有沒有辦法在該文件中添加link_to? – kakubei 2012-03-19 14:10:20

+0

嘗試類似這樣的: '= dvd.directors.map {| director | link_to director.name,dvd_director_path(dvd,director)}。join(「,」).html_safe' – 2014-03-03 02:30:48