私は星の評価を与える方法を作成したいと思います。星はfontawesomeのstarとstar-halfになります。私は格付け(浮動小数点数は0.0から5.0まで0.5ステップずつ)を取る以下のメソッドを作成しました。半分の星は<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
)を返すことが期待されます。アイコンを引数として取るrailsヘルパーメソッドの使い方は?
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
これまでにこのようなことは一度もありませんでした。私の最初の考えは、star_rating()
をRubyヘルパー(この場合は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>) %>
でしたが、エラーを投げました。要するに
、Iモデル(post.rating
)と2つのアイコン(fa-star
とfa-star-half
)からの値をとるルビー方法を有しています。意図された星評価を達成するために、fontawesomeのアイコンと組み合わせてルビーメソッドを使用するベストプラクティスは何ですか?
私はこれを行うためのいくつかの宝石があることを知っていますが、私はレールをもっと理解するのを助けるためにゼロから作ることを試みています。
「スター」と「ハーフ」を渡す必要がある理由はありますか_star'を引数として使用しますか?これらの議論はこれまでと異なるでしょうか? –
はい、元のデザインの一部です。引数そのものは変更できますが、入力/出力は(rating) - >(function) - >(星の表示と評価に応じた半分の星) – Iggy