2010-09-06 26 views
1

我正在將jQuery star rating plugin與Rails集成。我已經編寫了Rails服務器端代碼,並對提交的新評級進行了排序,但目前我正在努力弄清楚如何使用該插件將平均評分值顯示爲靜態系列明星。顯示評分本身很好:在Rails中使用jQuery星級評分插件

<p> 
    <b>Rating:</b> 
    <%= @place.rating_av %> 
</p> 

......但是,將這個價值傳遞給星星的最好方法是什麼?使用以下代碼(來自插件網站)顯示靜態星號:

<input name="star3" type="radio" class="star" disabled="disabled"/> 
<input name="star3" type="radio" class="star" disabled="disabled"/> 
<input name="star3" type="radio" class="star" disabled="disabled" checked="checked"/> 
<input name="star3" type="radio" class="star" disabled="disabled"/> 
<input name="star3" type="radio" class="star" disabled="disabled"/> 

此示例顯示3星5星。我不需要任何ajax功能,只是一個簡單的靜態顯示。我應該考慮一個輔助方法(例如,如果@ place.rating_av == 3,輸出如上所示)?任何幫助將非常感激!

回答

1

我已經寫了幾個助手給輸出 - 以供將來參考:

def stars(place) 
    (place.rating_av.to_f).round 
end 

def rating_display(place) 
    if stars(place) == 0 
    render "no_stars" 
    elsif stars(place) == 1 
    render "one_star" 
    elsif stars(place) == 2 
    render "two_stars" 
    elsif stars(place) == 3 
    render "three_stars" 
    elsif stars(place) == 4 
    render "four_stars" 
    else stars(place) == 5 
    render "five_stars" 
end 
end 

然後在每個部分:

#_three_stars.html.erb 
<input name="star3" type="radio" class="star" disabled="disabled"/> 
<input name="star3" type="radio" class="star" disabled="disabled"/> 
<input name="star3" type="radio" class="star" disabled="disabled" checked="checked"/> 
<input name="star3" type="radio" class="star" disabled="disabled"/> 
<input name="star3" type="radio" class="star" disabled="disabled"/> 

並在視圖:

#show.html.erb 
<%= rating_display(@place) %> 

還需要一點整理,但它工作正常!如果有人有更好的解決方案,請讓我知道!