
Définissez la colonne pour enregistrer la note. Le type de colonne utilise le type float pour activer l'évaluation demi-étoile.
db/migrate/20XXXXXXXXXXXX_create_posts.rb
class CreatePosts < ActiveRecord::Migration[6.0]
  def change
    create_table :posts do |t|
     ~Abréviation~
      t.float :evaluation, null: false
     ~Abréviation~
    end
  end
end
https://github.com/wbotelhos/raty/tree/master/lib/images Téléchargez l'image de l'étoile à partir du lien ci-dessus. Placez-le dans un dossier dans les actifs / images.
https://github.com/wbotelhos/raty/blob/master/lib/jquery.raty.js Copiez le code du lien ci-dessus. Collez-le dans assets / javascript / application.js. ** Comme il est écrit en jquery, il est également nécessaire d'installer jquery. ** **
Vous pouvez entrer un classement par étoiles en écrivant ce qui suit dans le fichier de vue.
ruby:app/views/posts/new.html.erb
<%= form_with model: @post, local: true do |f| %>
~Abréviation~
<div class="field" id="star">
  <%= f.label :evaluation, "Évaluation étoilée:" %>
  <%= f.hidden_field :evaluation, id: :review_star %>
  <script>
    $('#star').raty({
      size     : 36,
      starOff:  '<%= asset_path('star-off.png') %>',
      starOn : '<%= asset_path('star-on.png') %>',
      starHalf: '<%= asset_path('star-half.png') %>',
      scoreName: 'post[evaluation]',   #Enregistrer dans la colonne d'évaluation
      half: true,   #Entrée demi-étoile
    });
  </script>
</div>
~Abréviation~
<% end %>
Vous pouvez afficher les résultats du classement par étoiles en écrivant ce qui suit dans le fichier de vue qui affiche les détails.
ruby:app/views/posts/show.html.erb
<% @posts.each do |post| %>
~Abréviation~
<div class="relative-post-evaluation">
  <span>Évaluation:</span>
  <span id="star-rate-<%= post.id %>"></span>
  <script>
    $('#star-rate-<%= post.id %>').raty({
      size: 36,
      starOff: "<%= asset_path('star-off.png') %>",
      starOn: "<%= asset_path('star-on.png') %>",
      starHalf: "<%= asset_path('star-half.png') %>",
      half: true,   #Affichage demi-étoile
      readOnly: true,   #Lecture seulement
      score: <%= post.evaluation %>,   #Affichage du nombre d'étoiles
    });
  </script>
  <%= post.evaluation %>
</div>
~Abréviation~
<% end %>
https://qiita.com/yuki_0920/items/a966d9fa2bdb621f805d https://qiita.com/kitaokeita/items/1e40724c3384507cec13 https://qiita.com/busitora2/items/5b59d1ea9e90c1b016b4
Recommended Posts