simple_form ist ein Juwel, das automatisch leistungsstarke Formulare erstellt. https://github.com/heartcombo/simple_form Es wird nicht nur ein Formular erstellt, sondern es werden auch automatisch Fehlermeldungen und Elementnamen angezeigt.
Diesmal ist es ein einfaches Schienenprojekt mit zwei Tabellen. Ich habe versucht, simple_form zu verwenden
Implementieren Sie zunächst nur das einfachste Implementierungsbenutzermodell
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
Führen Sie die folgende Migrationsdatei aus. `` `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
Schreiben Sie simple_form in die Ansichtsdatei (neu). Es ist fast eine Kopie von read me
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 %>
Das Formular wird jetzt angezeigt. Das Ergebnis des Zugriffs auf localhost: 3000 / users / new lautet wie folgt.
Elemente, für die die Anwesenheitsüberprüfung festgelegt ist, werden automatisch angezeigt, da sie nicht leer sein dürfen.
Darüber hinaus beurteilt simple_form E-Mail und URL anhand des Spaltennamens und führt jeweils die optimale Validierung durch.
Das Design des Ballons wird auch von simple_form ohne Erlaubnis generiert.
Wie Sie anhand der Datums- und Alterselemente sehen können, wird das Eingabeformat je nach Typ beliebig geändert.
Dies ist nur ein Beispiel Es stehen verschiedene Eingabemuster wie Farbe und Land zur Verfügung. (Es ist in reademe geschrieben) So verwenden Sie simple_form.
Sie können das dem Benutzer zugeordnete untergeordnete Modell im Benutzermodell bearbeiten. Es wird verwendet, wenn Sie gleichzeitig auf einer Seite bearbeiten möchten, auf der das Benutzermodell das Hauptmodell ist.
Dieses Mal bereiten wir ein untergeordnetes Modell mit dem Namen user_property vor. Nicht die Erstellungsaktion von user_properties_controller Ermöglichen Sie das Bearbeiten mit create of users_controller. (Gleiches gilt für das Update
Außerdem können Sie die Senden-Schaltflächen zu einer kombinieren.
Unten finden Sie die Datei, die sich gegenüber dem vorherigen Mal geändert hat.
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
Führen Sie die folgende Migrationsdatei aus. `` `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 wird wie folgt geschrieben. ---- user_proiperty ----- Die folgenden Elemente wurden hinzugefügt. Verwenden Sie 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 %>
Das Ergebnis ist wie folgt Zwei Elemente für user_property wurden hinzugefügt. Das ist es.
Ähnlich wie beim Benutzer wird ein Validierungsfehler angezeigt
das ist alles
Recommended Posts