2014-03-03 183 views
-1

我想從一個查詢,看起來像這樣格式化結果哈希(類似於地圖,而括號中):顯示結果

notations = NotationItem.joins(:user).select(:name,:notation).where("movie_id = ?",self.id)

注:NotationItem是許多從許多表用戶和電影

之間的關係:名字來自用戶表,:從NotationItem

符號

我可以使用...

notations.map {|n| "#{n.name}: #{n.notation}"}

但方括號輸出格式不適用於我。

從那個時候起,我想我可以使用

notations.each do |key, value| 
     "#{key}: #{value}" 
    end 

但似乎我的哈希沒有內置的正確途徑。

對不起,我問這樣的基本需求...

+2

爲什麼所以*方括號語法不適用於我。*?它有什麼問題? –

+0

我沒有支架語法的問題,我的壞,我想說方括號輸出格式,如[「name1:notation1」,「name2:notation2」] – Tabascow

+0

好吧,然後我可以看到它正在生產' notations.map {| n | 「#{n.name}:#{n.notation}」}'..不是嗎? –

回答

0

您可以使用#join

notations.map do |n| 
    "#{n.name}: #{n.notation}" 
end.join(', ') # => "name1: notation1, name2: notation2" 
+0

的原因是什麼?爲什麼你要求使用'do..end' ..? –

+0

對不起,我想說方括號輸出格式,如[「name1:notation1」,「name2:notation2」] – Tabascow

+0

@Tascascow現在呢?你可以使用'#join'使數組成爲一個字符串。 – Agis

1

我假設你想打印結果。在散列上做一個.map會給你一個數組,而不是一個字符串。你可能想是這樣的:

hash = { 
    key1: 'value1', 
    key2: 'value2' 
} 

p hash.map { |key, value| "#{key}: #{value}" }.join(", ") 
# => "key1: value1, key2: value2" 

您可以通過do .. end代替{ .. }如果你想。

+0

這是正確的,這聽起來像我忘記了地圖的結果是一個數組,我只是簡單地跳過.join方法。非常感謝您的關注 – Tabascow