[RUBY] [Rails] "Entrée" -> "Écran de confirmation" -> "Enregistrer" -> "Afficher"

introduction

Après la saisie, j'ai pensé qu'il serait plus facile pour l'utilisateur de l'enregistrer avec un écran de confirmation entre les deux. Présentation de la méthode "Entrée" -> "Écran de confirmation" -> "Enregistrer" -> "Affichage".

table des matières

  1. Construction de la fondation
  2. Mise en œuvre de "Saisie" -> "Ecran de confirmation" -> "Enregistrer"
  3. "Écran de saisie"
  4. "Écran de confirmation"
  5. "Enregistrer" et "Afficher"

Environnement de développement

ruby 2.6.5 rails 6.0.0 Base de données mysql2 0.4.4

la mise en oeuvre

Implémentons-le ~

1. Construction de la fondation

Création de contrôleur

Terminal.


rails g controller new create show

app/controllers/events_controller.rb


class UsersController < ApplicationController
  def new
  end

  def create
  end

  def show
  end
end

Dans le même temps, le modèle de vue est également généré automatiquement.

routage

Définissez également le routage.

config/routes.rb


Rails.application.routes.draw do
  root to: 'users#new'
  resources :users, only: [:new, :create, :show] do
    collection do #C'est important
      post :confirm #C'est important
    end
  end
end

En ajoutant confirmation à ce qui précède, il est possible de passer à «l'écran de confirmation».

Créer une table

Créez un modèle et modifiez le fichier de migration.

Terminal.


rails g model user

db/migrate/2020XXXXXXXXX_create_user.rb


class CreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      t.string :name
      t.string :age
      t.string :email

      t.timestamps
    end
  end
end

Terminal.


rails db:migrate

Les bases ont été mises en œuvre. Ensuite, nous implémenterons le contenu en détail.

2. Mise en œuvre de "Saisie" -> "Ecran de confirmation" -> "Enregistrer"

La description finale du contrôleur est ci-dessous. Nous avons également défini la validation minimale pour l'enregistrement.

app/controllers/events_controller.rb


class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def confirm
    @user = User.new(user_params)
    render :new if @user.invalid?
  end

  def create
    @event = Event.new(event_params)
    if params[:back]
      render :new
    else pay_event && @event.save!
      redirect_to @event
    end
  end

  def show
    @user = User.find_by(id: params[:id])
  end

  private

  def user_params
    params.require(:user).permit(:name, :age, :email)
  end
end

Pour plus de commodité, nous appliquerons un minimum de validation au modèle.

app/models/user.rb


class User < ApplicationRecord
  validates :name, :age, :email, presence: true
end

3. "Écran de saisie"

Écrivez le contrôleur.

app/controllers/events_controller.rb


  def new
    @user = User.new
  end

Décrivez la vue. J'ai fait trois articles.

html:app/views/users/new.html.erb


<h1>Enregistrement de l'utilisateur</h1>

<%= form_with(model: @user, url:confirm_users_path, local: true) do |f| %>

<div>
  <%= f.label :Nom%>
  <%= f.text_field :name %>
</div>

<div>
  <%= f.label :âge%>
  <%= f.text_field :age %>
</div>

<div>
<%= f.label :Email %>
<%= f.text_field :email %>
</div>

<%= f.submit "Vers l'écran de confirmation" %>

<% end %>

Utilisez url: confirm_users_path pour passer à" l'écran de confirmation ".

4. "Écran de confirmation"

-Ecrire le contrôleur.

app/controllers/events_controller.rb


  def confirm
    @user = User.new(user_params)
    render :new if @user.invalid?
  end

#réduction

  private
  def user_params
    params.require(:user).permit(:name, :age, :email)
  end

#réduction

Prenez les données saisies dans (user_params) et attribuez-les à @ user. Pour le moment, n'oubliez pas de permettre avec le paramètre strong dans private.

-Décrivez la vue. Tout d'abord, créez un fichier confirm.html.erb et écrivez ce qui suit.

html:app/views/users/confirm.html.erb


<h1>écran de confirmation</h1>

<p>Nom: <%= @user.name%></p>
<p>âge: <%= @user.age%></p>
<p>Email: <%= @user.email%></p>
#Jusqu'à ce point pour l'affichage

#D'ici pour le stockage
<%= form_with(model: @user, local: true) do |f| %>
  <%= f.hidden_field :name %>
  <%= f.hidden_field :age %>
  <%= f.hidden_field :email %>
  <%= f.submit "Envoyer" %>
  <%= f.submit "Revenir", name: :back %>
<% end %>

Les données d'entrée affectées à «@ user» sont affichées et développées. Pour le moment, si vous n'utilisez que form_with, vous pouvez le modifier sur" l'écran de confirmation ", alors masquez-le avec hidden_field. Au lieu de cela, il est affiché dans la partie balise <p> en haut.

Ceci termine l'écran de confirmation.

5. "Enregistrer" et "Afficher"

·manette

app/controllers/events_controller.rb


  def create
    @event = Event.new(event_params)
    if params[:back]
      render :new
    else pay_event && @event.save!
      redirect_to @event
    end
  end

Après l'enregistrement, définissez redirect_to @ user pour accéder à la page de cet utilisateur. Le @ user ici n'est pas le rôle de la variable d'instance, mais le but est de déterminer le: id, qui signifie" la page correspondant à l'enregistrement stocké dans cette variable ".

app/controllers/events_controller.rb


  def show
    @user = User.find_by(id: params[:id])
  end

Créez une action pour afficher la page de l'utilisateur.

· Vue Enfin, créez un écran de fin.

html:app/views/users/show.html.erb


<h1>Votre inscription est complète</h1>

<p>Nom: <%= @user.name%></p>
<p>âge: <%= @user.age%></p>
<p>Email: <%= @user.email%></p>

<%= link_to "Revenir", root_path %> 

terminé! !!

Sommaire

C'était une méthode de "saisie" -> "écran de confirmation" -> "sauvegarde" -> "affichage".

Nous implémenterons cet "écran de confirmation" avec le calendrier Simple dans l'application en développement personnel. Si vous êtes intéressé, veuillez vous y référer également.

[Rails] Introduisez un calendrier simple et insérez un "écran de confirmation" dans les événements supplémentaires https://qiita.com/AKI3/items/1b4850bb39be61dbc1a4

finalement

Je suis un débutant en programmation, mais je publie un article dans l'espoir qu'il aidera les gens qui sont également en difficulté. Cette fois, je l'ai posté comme un enregistrement du premier travail de développement personnel. A la prochaine fois ~

référence

https://qiita.com/ngron/items/d55aac6e81a9fb2fe81c

Recommended Posts

[Rails] "Entrée" -> "Écran de confirmation" -> "Enregistrer" -> "Afficher"
[Rails] Implémenter le classement par étoiles (entrée, sauvegarde, affichage)
[Rails] Afficher le partage
[Note] Confirmation de routage Rails3
[Fonction de commande] rails Implémentation de la fonction de commande L'écran de confirmation sera également créé ~
[Rails] Enregistrez des images à l'aide de carrierwave
Afficher le calendrier mensuel dans Rails
Relation de vue du contrôleur de routage des rails
[Rails 6] Comment créer un écran de saisie de formulaire dynamique à l'aide de cocoon
[Rails] Ajoutez un écran de confirmation et un écran de fin pour concevoir l'inscription des membres.