Voici comment mettre en œuvre une note 5 étoiles sur vos articles de magasin et de repas! !! Tout d'abord, préparez une colonne pour stocker le nombre d'étoiles. Créez une colonne entière nommée star.
rails g migration AddStarToPosts star:integer
Le fichier de migration est ci-dessous.
class AddStarToPosts < ActiveRecord::Migration[5.1]
def change
add_column :posts, :star, :integer
end
end
Je vais migrer.
rails db:migrate
Vérifiez le schéma de base de données dans la table posts
schema.rb
t.integer "star"
Si c'est écrit, c'est OK!
Nous pourrons envoyer le nombre "2" pour 2 étoiles et "5" pour 5 étoiles. Tout va bien tant que vous pouvez envoyer une valeur numérique, mais ici nous allons l'implémenter avec la radio.
html:posts/new.html.erb
<%= form_for @posts do |f| %>
<div class="field">
<p>
<%= f.label :name %>
<%= f.text_field :name %>
</p>
<-!Pièce ajoutée->
<p>
5 étoiles:
<label><%= f.radio_button :star, 1 %> 1</label>
<label><%= f.radio_button :star, 2 %> 2</label>
<label><%= f.radio_button :star, 3 %> 3</label>
<label><%= f.radio_button :star, 4 %> 4</label>
<label><%= f.radio_button :star, 5 %> 5</label>
</p>
<-!Jusque là->
</div>
<%= f.submit "POST IT!" %>
<% end %>
Si vous utilisez une action pour recevoir un paramètre dans l'action de création, Ajoutons une colonne étoile
posts_controller.rb
private
def post_params
params.require(:posts).permit(:name,:star)
end
Enfin, les étoiles sont affichées dans l'instruction for! !!
html:posts/index.heml.erb
<% @posts.each do |t| %>
<div class="index-name">
<%= t.name %>
</div>
<-!Points supplémentaires->
<div class=“star-bar”>
<%for i in 1..t.star do%>
★
<%end%>
</div>
<-!Points supplémentaires->
<%end%>
Ceci complète la fonction cinq étoiles! !!
Recommended Posts