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