gpt4 book ai didi

ruby-on-rails - Ruby:在 block 后调用 'join'

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:04 26 4
gpt4 key购买 nike

我正在观看 RailsCast (#101),其中作者使用一些方法为博客制作星级评分系统。在方法 star_images 中,他在 block 的末尾调用了 join。我认为这会将一个数组变成一个字符串,但为什么需要这样做呢?

查看

<%= render_stars(product.rating) %>

Application_helper.rb

 def render_stars
content_tag :div, star_images, :class => 'stars'
end

私有(private)

 def star_images
(0...5).map do |position|
star_image(((@rating-position)*2).round)
end.join
end

def star_image(value)
image_tag "/images/#{star_type(value)}_star.gif", :size => '15x15'
end

def star_type(value)
if value <= 0
'empty'
elsif value == 1
'half'
else
'full'
end
end

最佳答案

star_image 方法生成一个字符串,其中包含一个 img 标签。 star_images 方法应该返回一个包含 5 个 img 标签的字符串。

如果作者没有在 star_images 中调用 join,那么 star_images 将返回一个包含 5 个字符串的数组,这可能会导致意外行为。一般来说,如果你有一个生成一些 HTML 的辅助函数,它应该将它作为一个字符串(而不是一个数组)返回。通过调用 join,他将所有 5 个字符串连接成一个字符串,这就是返回的字符串。

关于ruby-on-rails - Ruby:在 block 后调用 'join',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com