我想从查询中格式化结果哈希,如下所示:
notations = NotationItem.joins(:user).select(:name,:notation).where("movie_id = ?",self.id)
注意:NotationItem是用户和电影之间关系的多对多表格
:name来自User表,:来自NotationItem的符号
我可以用......
notations.map {|n| "#{n.name}: #{n.notation}"}
但是方括号输出格式对我来说无法使用。
从那一刻起我以为我可以使用
notations.each do |key, value| "#{key}: #{value}" end
但似乎我的哈希不是以正确的方式构建的。
抱歉,我要求满足这些基本需求......
答案 0 :(得分:1)
您可以使用#join
:
notations.map do |n|
"#{n.name}: #{n.notation}"
end.join(', ') # => "name1: notation1, name2: notation2"
答案 1 :(得分:1)
我假设您要打印结果。在哈希上执行.map
会给你一个数组,而不是一个字符串。你可能想要这样的东西:
hash = {
key1: 'value1',
key2: 'value2'
}
p hash.map { |key, value| "#{key}: #{value}" }.join(", ")
# => "key1: value1, key2: value2"
如果需要,您可以将{ .. }
替换为do .. end
。