我正在渲染我的Profiles#Index
视图。在该视图中,我称之为辅助方法:
<%= ratings_labels(profile, params[:rating]) %>
这在profiles_helper.rb
中定义,如下所示:
def ratings_labels(profile, rating_param)
rating_classes = {
'speed' => 'label label-success label-lg',
'tackling' => 'label label-info label-lg',
'passing' => 'label label-warning label-lg',
'dribbling' => 'label label-primary label-lg'
}
rating_classes.each do |rating, klass|
content_tag :div, class: "col-lg-3" do
content_tag :span, class: "#{klass}" do
"#{rating.capitalize}: #{profile.ratings.find_by(user: current_user)[rating]}"
end
end
end
end
end
但是,HTML中的输出是这样的:
{"speed"=>"label label-success label-lg", "tackling"=>"label label-info label-lg", "passing"=>"label label-warning label-lg", "dribbling"=>"label label-primary label-lg"}
请注意,没有生成HTML。没有div.col-lg-3
或span
。
为什么?
答案 0 :(得分:1)
试试这个,这应该有效
html_safe
您必须记录单个循环和聚合的输出以获得所需的输出。此外,clean
会使您的字符串HTML
在浏览器中呈现为有效rating_classes
。
请注意,没有生成HTML。没有div.col-lg-3或span。
你的helper方法返回哈希ruby
,因为它是方法中的最后一个语句(你看到的ruby功能)。渲染.to_s
时会在每个对象中执行{{1}}个方法。