Quand j'ai pensé à créer une fonction de brouillon, il n'y avait pas beaucoup d'articles, j'ai donc décidé de garder une trace.
ubuntu(WSL)
Ruby 2,5.1
Rails 6.0.2
Les fonctions suivantes sont supposées avoir été créées.
models/post.rb
belongs_to :user
models/user.rb
has_many :microposts, dependent: :destroy
Tout d'abord, ajoutez une colonne d'état au modèle Post pour en faire un type booléen. Il est possible d'utiliser des entiers au lieu de booléens. Entrez la commande suivante.
bin/rails g migration AddStatusToPost status:boolean
Modifiez le fichier de migration.
migrationfile.rb
def change
add_column :microposts, :status, :boolean, default: true, null: false
end
Après modification, migrez.
models/post.rb
enum status: { draft: false, published: true }
Spécifiez le brouillon de la colonne d'état comme faux et la colonne publiée de l'état comme vrai.
Obtenez l'identifiant de l'utilisateur avec @ user
.
users_controller.rb
#Pour brouillon
def confirm
@user = User.find(params[:user_id])
@microposts = @user.microposts.draft.page(params[:page])
end
#Pour publication
def show
@user = User.find(params[:id])
@microposts = @user.microposts.published.page(params[:page])
end
Si vous ajoutez collection
, l'identifiant ne sera pas ajouté à l'URL.
routes.rb
resources :users do
get 'confirm'
end
Je n'ai extrait que les parties pertinentes.
view/users/show.html.slim
//Écran des détails de l'utilisateur
= link_to "Liste des messages", @user
= link_to "préféré", user_likes_path(current_user)
= link_to "Projet de liste", user_confirm_path(current_user)
//Afficher mon message
- if @microposts.present?
= render "microposts/list", microposts: @microposts
- else
h4 Aucun message
Veuillez rédiger le projet de liste selon vos préférences.
view/users/confirm.html.slim
Liste brouillon h4
table.table.table-hover
thead.thead-default
tr
th = Micropost.human_attribute_name(:title)
th = Micropost.human_attribute_name(:content)
th = Micropost.human_attribute_name(:created_at)
th
tbody
- @microposts.each do |micropost|
tr
td = link_to micropost.title, micropost
td = link_to micropost.content, micropost
td
Le contenu de ʻicroposts / list` est le même que ci-dessus.
Si vous faites une erreur, veuillez faire une demande de modification ou un commentaire.
Recommended Posts