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