[英]How to use rails helper method that takes in an icon as an argument?
我想創建一種給我星級的方法。 星星將來自fontawesome的星星和一半星星 。 我創建了下面的方法來接受評分(以0.5為增量從0.0到5.0浮動)。 半星將是<i class="fa fa-star-half" aria-hidden="true"></i>
,星將是<i class="fa fa-star" aria-hidden="true"></i>
。 如果等級為3.5,則預期返回(3× star
)+(1× half-star
)。
def star_rating(rating, star, half_star)
star = star
half_star = half_star
if ((rating % 1).round == 1) #ends with 0.5
result = (rating - 0.5).round * star + half_star
else
result = rating * star
end
return result
end
我以前從未做過這樣的事情。 我最初的想法是將posts_helper.rb
star_rating()
放入Ruby helper(在這種情況下為posts_helper.rb
)。
在帖子的視圖index.html.erb
,我做了<%= star_rating(post.rating, <i class="fa fa-star" aria-hidden="true"></i>, <i class="fa fa-star-half" aria-hidden="true"></i>) %>
但它引發了錯誤。
簡而言之,我有一個ruby方法,該方法從model( post.rating
)和兩個圖標( fa-star
和fa-star-half
)中獲取一個值。 將紅寶石方法與fontawesome的圖標結合使用以達到預期星級的最佳實踐是什么?
我知道有很多方法可以做到這一點,但是我正在嘗試從零開始,以幫助我更多地了解rails。
我真的不確定這是否是顯示評分槽幫助器的正確方法。 但這應該工作:
創建部分文件
# _rating.html.erb
<%= fa_icon "#{icon_name}" %>
添加到您所需的視圖文件
# view.html.erb
<%= show_raiting(3.3) %>
並將方法添加到helper,其中path/to/your
是_rating.html.erb模板的路徑
#***_helper.rb
def show_raiting(rating)
rating = rating.to_f
if rating.present?
output_stars = ''
rating.floor.times do
output_stars += render partial: 'path/to/your/rating', locals: { icon_name: 'star' }
end
output_stars += render partial: 'path/to/your/rating', locals: { icon_name: 'star-half' } unless rating % 1 == 0
output_stars.html_safe
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.