Ruby rails 显示评级系统的明星图片
Ruby on rails display star images for the rating system
我有一个简单的 rails 应用程序,用户可以在其中为产品留下评分,并且在我拥有它的那一刻,以便在索引页面上显示平均评分,所以对于 Animal Farm 这本书如果有评级:1、3、5,则该书的索引将显示 3。但我想要做的是用星星替换显示的数字,而不是显示 "star rating: 3" 它会显示 "star rating:" 然后是三个星星图像。有没有快速简单的方法来做到这一点?
/views/products/index.html.erb:
<div id="star-rating">
<% if not product.no_of_stars.blank? %>
Star rating: <%= product.no_of_stars %>
<% else %>
<%= link_to 'Please add a Review',{ controller: 'reviews', action: 'new', id: product.id } %>
<% end %>
</div>
/models/product.rb:
def no_of_stars
self.reviews.average('no_of_stars')
end
我还需要知道在哪里保存星星的图像以及如何 select 显示那颗星星,目前我已经在 /app/assets/images 目录中了。我需要在没有 java.
的情况下纯粹在 ruby 中执行此操作
有人可以帮忙吗,我是 ruby 的新手,所以可以详细说明该怎么做吗?感谢阅读。
你可以找个帮手来做。如果您需要不同型号的星星,您可以在文件中添加一个助手 app/helpers/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
您的重构视图将如下所示:
<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>
我有一个简单的 rails 应用程序,用户可以在其中为产品留下评分,并且在我拥有它的那一刻,以便在索引页面上显示平均评分,所以对于 Animal Farm 这本书如果有评级:1、3、5,则该书的索引将显示 3。但我想要做的是用星星替换显示的数字,而不是显示 "star rating: 3" 它会显示 "star rating:" 然后是三个星星图像。有没有快速简单的方法来做到这一点?
/views/products/index.html.erb:
<div id="star-rating">
<% if not product.no_of_stars.blank? %>
Star rating: <%= product.no_of_stars %>
<% else %>
<%= link_to 'Please add a Review',{ controller: 'reviews', action: 'new', id: product.id } %>
<% end %>
</div>
/models/product.rb:
def no_of_stars
self.reviews.average('no_of_stars')
end
我还需要知道在哪里保存星星的图像以及如何 select 显示那颗星星,目前我已经在 /app/assets/images 目录中了。我需要在没有 java.
的情况下纯粹在 ruby 中执行此操作有人可以帮忙吗,我是 ruby 的新手,所以可以详细说明该怎么做吗?感谢阅读。
你可以找个帮手来做。如果您需要不同型号的星星,您可以在文件中添加一个助手 app/helpers/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
您的重构视图将如下所示:
<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>