[Ruby on Rails] Fonction de post-édition (mise à jour, suppression)

Cible

--Modifier, mettre à jour 編集.gif

Environnement de développement

ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina

supposition

1, changement d'itinéraire

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

2, changement de contrôleur

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

3, changement de vue

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

[Ruby on Rails] Fonction de post-édition (mise à jour, suppression)
[Ruby on Rails] Fonction de prévisualisation de l'image dans le fichier
[Ruby on Rails] Introduction de la fonction de pagination
[Ruby on Rails] Fonction de sortie CSV
[Ruby on Rails] DM, fonction de chat
[Ruby on Rails] Fonction de recherche (non sélectionnée)
[Rails] Ajout de la fonction de commentaire Ruby On Rails
[Ruby on Rails] Suivez l'implémentation de la fonction: bidirectionnelle
Commande de création / suppression du contrôleur Ruby on Rails
[Ruby on rails] Implémentation d'une fonction similaire
[Ruby on Rails] Suppression logique (fonction de retrait)
[Ruby on Rails] Fonction de publication que seuls les utilisateurs connectés peuvent publier
Paramètres de validation pour la fonction de connexion Ruby on Rails
Implémentation de la fonction de connexion Ruby on Rails (Session)
Ruby: fonction d'édition de compte
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Ruby on Rails Implémentation de la fonction d'envoi automatique de courrier
Résumé des méthodes de mise à jour de plusieurs colonnes [Ruby on Rails]
[Ruby on Rails] Supprimer les images s3 avec Active Strage
[Ruby on Rails] Fonction de classement des scores (affichage complet)
[Ruby on Rails] Fonction de recherche (modèle, formule de sélection de méthode)
Record d'apprentissage de Ruby on rails -2020.10.03
Création de portfolio Ruby on Rails
[Ruby on Rails] Debuck (binding.pry)
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ②
Publier des vidéos sur les rails
Annuler la migration de Ruby on Rails
Record d'apprentissage de Ruby on rails -2020.10.06
Résumé de la validation Ruby on Rails
Mémorandum de base Ruby on Rails
Ruby on Rails Paramètre de la fonction d'envoi automatique des e-mails (avec Gmail)
[Ruby on Rails] Fonction de signet (enregistrement favori, comme): une direction
Supprimer tout le contenu de la page de liste [Ruby on Rails]
Une note sur la fonction de départ de Ruby on Rails
[Ruby on Rails] Implémenter la fonction de connexion par add_token_to_users avec l'API
[Ruby on Rails] Read try (: [] ,: key)
Variables Ruby on Rails, résumé constant
Installation de Ruby + Rails sur Ubuntu 18.04 (rbenv)
Connaissance de base de Ruby on Rails
Progatez Ruby on Rails
Comment utiliser Ruby on Rails
Ruby on Rails compatible japonais-anglais i18n
(Ruby on Rails6) "Effacer" le contenu publié
Mémo de construction de l'environnement Ruby on Rails 6.0
[Ruby on Rails] Création de la page de confirmation
Ruby On Rails conçoit un conflit de routage
[Ruby on Rails] Méthode d'aide pratique