Als ich darüber nachdachte, einen Entwurf zu erstellen, gab es nicht viele Artikel, deshalb beschloss ich, Aufzeichnungen zu führen.
ubuntu(WSL)
Ruby 2,5.1
Rails 6.0.2
Es wird davon ausgegangen, dass die folgenden Funktionen erstellt wurden.
--Postfunktion / Details / Löschen / Bearbeiten (Post) --Erstellen / Details des Benutzers (Benutzer)
models/post.rb
belongs_to :user
models/user.rb
has_many :microposts, dependent: :destroy
Fügen Sie dem Post-Modell zunächst eine Statusspalte hinzu, um es zu einem booleschen Typ zu machen. Es ist möglich, Interger anstelle von Boolean zu verwenden. Geben Sie den folgenden Befehl ein.
bin/rails g migration AddStatusToPost status:boolean
Bearbeiten Sie die Migrationsdatei.
migrationfile.rb
def change
add_column :microposts, :status, :boolean, default: true, null: false
end
Migrieren Sie nach der Bearbeitung.
models/post.rb
enum status: { draft: false, published: true }
Geben Sie den Entwurf der Statusspalte als falsch und den veröffentlichten der Statusspalte als wahr an.
Holen Sie sich die ID des Benutzers mit @ user
.
users_controller.rb
#Für Entwurf
def confirm
@user = User.find(params[:user_id])
@microposts = @user.microposts.draft.page(params[:page])
end
#Zur Veröffentlichung
def show
@user = User.find(params[:id])
@microposts = @user.microposts.published.page(params[:page])
end
Wenn Sie "Sammlung" hinzufügen, wird die ID nicht zur URL hinzugefügt.
routes.rb
resources :users do
get 'confirm'
end
Ich habe nur die relevanten Teile extrahiert.
view/users/show.html.slim
//Bildschirm mit Benutzerdetails
= link_to "Beitragsliste", @user
= link_to "Favorit", user_likes_path(current_user)
= link_to "Entwurfsliste", user_confirm_path(current_user)
//Meinen Beitrag anzeigen
- if @microposts.present?
= render "microposts/list", microposts: @microposts
- else
h4 Keine Beiträge
Bitte schreiben Sie den Listenentwurf nach Ihren Wünschen.
view/users/confirm.html.slim
h4 Entwurfsliste
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
Der Inhalt von "icroposts / list" ist der gleiche wie oben.
Wenn Sie einen Fehler machen, stellen Sie bitte eine Bearbeitungsanfrage oder einen Kommentar.
Recommended Posts