--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