Ruby 在 Rails 上显示半星表示小数评分,例如4.5
Ruby on Rails display half a star for a decimal rating, e.g. 4.5
我可以看到 5 个星号表示产品评分为 5,4 个星号表示产品评分为 4,等等。但是我想做的是用我自己制作的星号图像替换星号在我的 assets/images/ 目录中,如果评级为 4.5,则显示半星。有没有办法做到这一点?下面是我在 application_helper.rb 中的当前代码和 index.html.erb 中的视图。
application_helper.rb:
module ApplicationHelper
def render_stars(value)
output = ''
if (1..5).include?(value.to_i)
value.to_i.times { output += '*'}
end
output
end
end
index.html.erb:
<div id="star-rating">
<% if not product.no_of_stars.blank? %>
<div id="star-rating">
<% if product.no_of_stars.blank? %>
<%= link_to 'Please add a Review',{ controller: 'reviews', action: 'new', id: product.id } %>
<% else %>
Star rating: <%= render_stars(product.no_of_stars) %>
<% end %>
</div>
你可以试试这样的:
module ApplicationHelper
def render_stars(value)
i_value = value.floor
f_value = value - i_value
output = '*' * i_value
output << image_tag('half_star.jpg') if f_value > 0
output
end
end
您可能必须在视图中使用 .html_safe
。
但是,您的 html.erb
片段看起来不对。它不会正确呈现,如果您不关闭文件下方某处的第一个 if
,它会引发错误。你想达到什么目的?
假设您要使用 star.gif
作为星图,使用 half-star.gif
作为 1/2 星图:
module ApplicationHelper
def render_stars(value)
output = ''
if (1..5).include?(value.floor)
value.floor.times { output += image_tag('star.gif')}
end
if value == (value.floor + 0.5) && value.to_i != 5
output += image_tag('half-star.gif')
end
output.html_safe
end
end
我可以看到 5 个星号表示产品评分为 5,4 个星号表示产品评分为 4,等等。但是我想做的是用我自己制作的星号图像替换星号在我的 assets/images/ 目录中,如果评级为 4.5,则显示半星。有没有办法做到这一点?下面是我在 application_helper.rb 中的当前代码和 index.html.erb 中的视图。
application_helper.rb:
module ApplicationHelper
def render_stars(value)
output = ''
if (1..5).include?(value.to_i)
value.to_i.times { output += '*'}
end
output
end
end
index.html.erb:
<div id="star-rating">
<% if not product.no_of_stars.blank? %>
<div id="star-rating">
<% if product.no_of_stars.blank? %>
<%= link_to 'Please add a Review',{ controller: 'reviews', action: 'new', id: product.id } %>
<% else %>
Star rating: <%= render_stars(product.no_of_stars) %>
<% end %>
</div>
你可以试试这样的:
module ApplicationHelper
def render_stars(value)
i_value = value.floor
f_value = value - i_value
output = '*' * i_value
output << image_tag('half_star.jpg') if f_value > 0
output
end
end
您可能必须在视图中使用 .html_safe
。
但是,您的 html.erb
片段看起来不对。它不会正确呈现,如果您不关闭文件下方某处的第一个 if
,它会引发错误。你想达到什么目的?
假设您要使用 star.gif
作为星图,使用 half-star.gif
作为 1/2 星图:
module ApplicationHelper
def render_stars(value)
output = ''
if (1..5).include?(value.floor)
value.floor.times { output += image_tag('star.gif')}
end
if value == (value.floor + 0.5) && value.to_i != 5
output += image_tag('half-star.gif')
end
output.html_safe
end
end