5ツ星の評価を付けるのに超便利なjQuery raty
version2.5.2を使います。(2013/9/24現在)
◆プログラム一式をダウンロードしてくる
http://wbotelhos.com/raty/
◆まずはjsファイルの設置
Rails3ではデフォルトで
assets/javascripts/application.jsの
//= require jquery
というコメントみたいな記述でjqueryがRequireされています。
なのであとは jquery.raty.js を、 vendor/asset/javascripts/ に設置。
呼び出したいビューの中で<%= javascript_include_tag 'jquery.raty' %> とjquery.raty.jsファイルを呼び出します。
◆画像ファイルの設置
star-half-big.png
star-off-big.png
star-on-big.png
が使いたかったので、http://wbotelhos.com/raty/ のサイト内からダウンロードしてきました。
これをすべて assets/images/ へ。
ファイルパスはビューの中で <%= asset_path('star-half-big.png') %> で呼び出せます。
◆ビューで呼び出し
3.5とか星半分の評価も欲しかったので、halfをtrueにしています。
<script type="text/javascript"> <!-- $(function(){ $('#star_rank').raty({ half : true, size : 24, starHalf : '<%= asset_path('star-half-big.png') %>', starOff : '<%= asset_path('star-off-big.png') %>', starOn : '<%= asset_path('star-on-big.png') %>', target : '#hint', targetType: 'number', targetKeep: true, click: function(score, evt) { // alert('ID: ' + $(this).attr('id') + "\nscore: " + score + "\nevent: " + evt); //選択時に要素をアラート $("#star_rank_score").val(score); } }); }); //--> </script> <div id="star_rank"></div><div id="hint"></div> <%= f.hidden_field :star_rank_score %>
とりあえずこれをどこかしらに突っ込みます。
jsは
あとで綺麗に直します。
ページを表示して
<div id="star_rank"></div>
のところ星が表示されればOK。
<div id="hint"></div>
のところにはクリックした時のスコアが数字で入ります。
$("#star_rank_score").val(score);
があるので、hidden_fieldのフォーム要素(idがstar_rank_score)のvalueにも入れられます!
難しいかなって思ってたのに感動しましたー><