我正在尝试创建一个帮助程序,以根据模型属性显示评级星。
我有以下内容:
def show_profile_stars(profile)
content_tag :span, :class => 'stars' do
profile.stars.times do
image_tag("stars.gif", :size => "30x30", :class => "gold")
end
end
end
'stars'是一个整数字段。
但它不是渲染图像标签,而只是按字面显示'星号'。
如果我只放置没有迭代块的image_tag,它会显示图像,问题在于迭代。
我想我错过了接收块的方法(我还是RoR的新手)。
任何帮助?
谢谢!
答案 0 :(得分:2)
使用concat
帮助程序:
def show_profile_stars(profile)
content_tag :span, :class => 'stars' do
profile.stars.times do
concat(image_tag("stars.gif", :size => "30x30", :class => "gold"))
end
nil
end
end
您还需要在nil
的末尾返回content_tag
,以便它不会输出stars
。
答案 1 :(得分:1)
有两件事,不会在CSS中使用跨度上的类(例如一星级,两星级等)吗?
无论如何,要实际做你想做的事,试试:
stars = []
profile.stars.times { stars << image_tag("stars.gif", :size => "30x30", :class => "gold") }
content_tag :span, stars.join("\n").html_safe, :class => "stars"