在我的用户个人资料视图中,我有:
#show.html.haml
%p
%b Categories
= list_self_reviews(current_user.self_reviews)
list_self_reviews
助手看起来像这样:
#profiles_helper.rb
def list_self_reviews(reviews)
self_reviews = {}
reviews.each { |review| self_reviews["#{review.get_category_name}"] = "#{review.body}" }
self_reviews.each do |key, value|
puts "#{key} (#{value})"
end
end
我正在创建评论类别名称和评论正文的散列,并尝试在个人资料视图中以[&34; [类别名称]:[评论正文]的格式打印它们。&#34 ;但是,在视图中打印出整个哈希值,因此它看起来像这样:
{"organizing"=>"I'm a pretty organized guy", "tutoring"=>"helped with spanish"}
它应该说"组织:我是一个非常有组织的人"然后在它下面的另一个。我在这里想到的有关如何在视图中正确返回的内容是什么?
答案 0 :(得分:2)
更改您的个人资料查看文件(show.html.haml),如下所示
%p
%b Categories
- current_user.self_reviews.each do |review|
= "[#{review.get_category_name}]: [#{review.body}]."
%br/
答案 1 :(得分:1)
从重要的方法返回的是什么 - 这是插入到HTML中的内容。 puts
仅用于输出到控制台。您的方法隐式返回self_reviews
哈希,因为它是评估的最后一项(使用self_reviews.each
)。就目前而言,您需要构建一个包含所有列表项的单个字符串(可能需要包含HTML)并返回该字符串。
话虽这么说,我觉得你的代码可以像以下那样整洁:
#show.html.haml
%p
%ul Categories
- current_user.self_reviews.each do |review|
%li = review_item(review)
#profiles_helper.rb
def review_item(review)
"#{review.get_category_name}: #{review.body}"
end
......甚至根本没有帮助(就像其他答案一样)。
修改 - 或者您可以执行以下操作:
#show.html.haml
%p
= review_list
#profiles_helper.rb
def review_list
content_tag :ul, "Categories" do
current_user.self_reviews.each do |review|
content_tag :li, "#{review.get_category_name}: #{review.body}"
end
end
end
但我个人更喜欢我的模板更明确一些,在这种情况下你可能最好使用偏见。