如何在帮助器中的迭代内显示多个image_tag

时间:2010-11-23 21:05:46

标签: ruby-on-rails ruby iteration helpers

我正在尝试创建一个帮助程序,以根据模型属性显示评级星。

我有以下内容:

  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的新手)。

任何帮助?

谢谢!

2 个答案:

答案 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"