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".
ruby 2.6.5 rails 6.0.0 Base de données mysql2 0.4.4
Implémentons-le ~
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.
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é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.
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
É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 ".
-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.
·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é! !!
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
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 ~
https://qiita.com/ngron/items/d55aac6e81a9fb2fe81c
Recommended Posts