簡體   English   中英

如何使用以圖標作為參數的rails helper方法?

[英]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-starfa-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM