--Modifier, mettre à jour
ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina
config/routes.rb
resources :posts, only: [:create, :new]
En ajoutant ce qui suit à la description ci-dessus, le paramètre d'itinéraire d'édition, de mise à jour, de destruction.
config/routes.rb
resources :posts, only: [:create, :new, :edit, :update, :destroy]
Ce n'est pas grave si les résultats suivants sont obtenus.
Terminal
$ rails routes
...
posts POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post PATCH /posts/:id(.:format) posts#update
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy
Ajoutez ce qui suit
app/controllers/posts_controller.rb
...
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update(post_params)
redirect_to request.referer
else
render :new
end
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to request.referer
end
Créez un nouveau fichier edit.html.erb sous app / views / posts
erb:app/views/posts/edit.html.erb
<h1>Posts#edit</h1>
<span>Utilisateur actuellement connecté:<%= current_user.name %></span>
<%= form_for(@post, url: post_path(@post)) do |f| %>
<div>
<%= f.label :Titre%><br>
<%= f.text_field :title, autofocus: true, :placeholder =>"#{@post.title}" %>
</div>
<div>
<%= f.label :Contenu%><br>
<%= f.text_area :body, :placeholder =>"#{@post.body}" %>
</div>
<div><%= f.submit "Mise à jour" %></div>
<% end %>
erb:app/views/posts/new.html.erb
<table>
<thead>
<tr>
<th>Publié par nom</th>
<th>Titre</th>
<th>Texte</th>
</tr>
</thead>
<tbody>
<% @posts.each do |post| %>
<tr>
<td><%= post.user.name %></td>
<td><%= post.title %></td>
<td><%= post.body %></td>
<td><%= link_to "Éditer", edit_post_path(post) %></td>← Ajouter
<td><%= link_to "Effacer", post_path(post), method: :delete %></td>← Ajouter
</tr>
<% end %>
</tbody>
</table>
Recommended Posts