simple_form est un joyau qui crée automatiquement des formulaires haute performance. https://github.com/heartcombo/simple_form Non seulement il crée un formulaire, mais il affiche également automatiquement les messages d'erreur et les noms d'éléments.
Cette fois, c’est un simple projet de rails avec deux tables. J'ai essayé d'utiliser simple_form
Tout d'abord, implémentez uniquement le modèle utilisateur d'implémentation le plus simple
gemfile
gem 'simple_form'
user.rb
class User < ApplicationRecord
validates :name, presence: true
validates :email, presence: true
validates :age, presence: true
end
routes.rb
resources :users
users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to user_path(@user)
else
render 'users/new'
end
end
private
def user_params
params.require(:user).permit(
:name,
:email,
:age,
:date
)
end
Exécutez le fichier de migration suivant. `` `rails db: migrate```
db/migrate/20200906_create_users.rb
class CreateUsers < ActiveRecord::Migration[5.1]
def change
create_table :users do |t|
t.string :name
t.string :email
t.integer :age
t.datetime :date
t.string :url
t.timestamps
end
end
end
Écrivez simple_form dans le fichier de vue (nouveau). C'est presque une copie de me lire
ruby:app/views/users/new.html.erb
<%= simple_form_for user do |f| %>
<%= f.input :name %>
<%= f.input :email %>
<%= f.input :age, collection: 18..60 %>
<%= f.input :date %>
<%= f.input :url %>
<%= f.button :submit %>
<% end %>
Le formulaire est maintenant affiché. Le résultat de l'accès à localhost: 3000 / users / new est le suivant.
Les éléments pour lesquels la validation de présence est définie sont automatiquement affichés car ils ne peuvent pas être vides.
De plus, simple_form évalue l'email et l'url à partir du nom de la colonne, et chacun d'eux effectue la validation optimale.
La conception de la bulle est également générée par simple_form sans autorisation.
De plus, comme vous pouvez le voir en regardant les éléments de date et d'âge, le format d'entrée changera arbitrairement en fonction du type.
C'est juste un exemple Différents modèles d'entrée tels que la couleur et le pays sont disponibles. (Il est écrit en reademe) Comment utiliser simple_form est comme ça.
Vous pouvez modifier le modèle enfant associé à l'utilisateur à partir du modèle utilisateur. Il est utilisé lorsque vous souhaitez éditer en même temps sur une page où le modèle utilisateur est le principal.
Cette fois, nous allons préparer un modèle enfant appelé user_property. Pas l'action de création de user_properties_controller Rendre possible l'édition avec create of users_controller. (idem pour la mise à jour
Il vous permet également de combiner les boutons d'envoi en un seul.
Vous trouverez ci-dessous le fichier qui a changé par rapport à la dernière fois.
user_property.rb
class UserProperty < ApplicationRecord
belongs_to :user
validates :nickname, presence: true
validates :hobby, presence: true
end
user.rb
class User < ApplicationRecord
validates :name, presence: true
validates :email, presence: true
validates :age, presence: true
has_one :user_property
accepts_nested_attributes_for :user_property
end
users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
@user.create_user_property(nickname: "takashi", hobby: "yamamoto")
end
private
def user_params
params.require(:user).permit(
:name,
:email,
:age,
:date,
user_property_attributes: %i[
nickname
hobby
]
)
end
Exécutez le fichier de migration suivant. `` `rails db: migrate```
db/migrate/20200906_create_user_property.rb
class CreateUserProperties < ActiveRecord::Migration[5.1]
def change
create_table :user_properties do |t|
t.integer :user_id
t.string :nickname
t.string :hobby
t.timestamps
end
end
end
Simple_form s'écrit comme suit. ---- user_proiperty ----- Les éléments suivants ont été ajoutés. Utilisez simple_field_for.
ruby:app/views/users/new.html.erb
<%= simple_form_for user do |f| %>
<%= f.input :name %>
<%= f.input :email %>
<%= f.input :age, collection: 18..60 %>
<%= f.input :date %>
<%= f.input :url %>
-------user_property----------
<%= f.simple_fields_for :user_property, user.user_property do |ff| %>
<%= ff.input :nickname %>
<%= ff.input :hobby %>
<% end %>
<%= f.button :submit %>
<% end %>
Le résultat est le suivant Deux éléments pour user_property ont été ajoutés. C'est tout.
Similaire à l'utilisateur, une erreur de validation est affichée
c'est tout
Recommended Posts