在我的用户配置视图中,我有这个:
#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
我正在创建一个评审类别名称和评审主体的散列,并试图以"[类别名称]:[评审主体]"的格式在概要视图中打印它们。然而,在视图中,整个散列被打印出来,因此它看起来像这样:
{"organizing"=>"I'm a pretty organized guy", "tutoring"=>"helped with spanish"}
它应该只写"有组织:我是一个很有组织的人",然后在它下面的另一个。关于如何在视图中正确返回这个,我遗漏了什么?
修改您的配置文件视图文件(show.html.haml),如下所示
%p
%b Categories
- current_user.self_reviews.each do |review|
= "[#{review.get_category_name}]: [#{review.body}]."
%br/
重要的是从方法返回的内容-这是插入到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
,但我个人更喜欢我的模板更明确一点,在这种情况下,您可能最好使用部分