Les fonctions suivantes sont supposées avoir été créées.
--Fonction de publication --Détails de l'article --Installer la gemme --Créer une table --Introduction de saccage
Ajoutez ce qui suit au modèle que vous souhaitez étiqueter.
micropost.rb
acts_as_taggable
Ajoutez ce qui suit aux paramètres forts à enregistrer. Je posterai également créer au cas où.
microposts_controller.rb
def create
@micropost = Micropost.new(micropost_params.merge(user_id: current_user.id))
if @micropost.save
redirect_to @micropost, flash:{success: "Publié"}
else
render :new
end
end
def show
@micropost = Micropost.find(params[:id])
end
private
def micropost_params
params.require(:micropost).permit(:content, :image, :tag_list)
end
Ajoutez ce qui suit à votre vue: Créez une vue d'entrée et une vue d'affichage.
new.html.slim
= form_with model: micropost, local: true do |f|
.form-group
= f.label :tag
//,Séparé par
= f.text_field :tag_list, value: @micropost.tag_list.join(","), class: "form-control"
= f.submit "Envoyer", class: "btn btn-primary"
show.html.slim
table.table.table-hover
today
tr
th = Micropost.human_attribute_name(:tag)
td
- @micropost.tag_list.each do |tag|
= link_to tag, microposts_path(tag_name: tag), class: "micropost_tags__link"
microposts_controller.rb
def index
@q = Micropost.ransack(params[:q])
if params[:tag_name]
#Renvoie des informations pour le même message sélectionné
@microposts = Micropost.tagged_with(params[:tag_name]).page(params[:page])
elsif params[:q]
#Renvoyer une liste de messages
@microposts = @q.result(distinct: true).page(params[:page])
else
@microposts = Micropost.page(params[:page])
end
end
Si vous faites une erreur, veuillez faire une demande de modification ou un commentaire.
Recommended Posts