我有一個Rails 4.2應用程序,它有一個評級系統。我想將演示者邏輯轉移到助手中。我想根據排名是否完整來顯示星星或半星。正確的方法來在Rails助手中渲染fa_icons
module ThingHelper
def calculate_stars(thing)
output = ""
total = thing.overall_average
thing.overall_average.ceil.times do |n|
if total >= 1
output += content_tag(:i, "<%= fa_icon 'star' %>")
total -= 1
else
output += content_tag(:i, "<%= fa_icon 'star-half' %>")
end
end
return output
end
end
在我的ERB模板,我有這樣的:
<%= calculate_stars(thing).html_safe %>
然而,它只是列出了這樣的字符串: 「<%= fa_icon '明星' %>」。我嘗試使用raw
以及使用concat
而不是+=
,但兩種嘗試的解決方案都只是渲染一個字符串。
我也試過沒有content_tag
幫手,但那是行不通的。
我已經諮詢了以下內容: http://apidock.com/rails/ActionView/Helpers/TagHelper/content_tag,How to embed font-awesome icons into submit_tag,和Ruby on Rails display half a star for a decimal rating, e.g. 4.5。
我錯過了什麼?由於
編輯
我不相信這可以在助手來完成,所以我只是不得不把邏輯視圖。基本上,我圍繞並計算完整星星的數量,然後根據四捨五入條件添加另一個星星。
感謝。這工作。您指出的問題是我傳遞給'content_tag'的參數。 – user3162553