Rails x Bootstrap4 x nested_attributes 양식 디자인 패턴
9886 단어 bootstrap4Rails
설치
nested_attributes
의 폼을 만들 때 cocoon 이라는 Gem을 사용하면 편리하기 때문에 그것을 사용합니다. gem 'cocoon'
assets/application.js
에 등록해야합니다. //= require cocoon
모델에 구현
User
와 Dog
를 일대다로 관련짓습니다. ( nested_attributes
잊지 마세요.) class User < ApplicationRecord
ATTRIBUTES = %i[name].freeze
has_many :dogs, dependent: :destroy, inverse_of: :user
accepts_nested_attributes_for :dogs, allow_destroy: true, reject_if: :all_blank
end
class Dog < ApplicationRecord
# nested_attributesの都合上、idと_destroyを加えている。
ATTRIBUTES = %i[id _destroy name].freeze
belongs_to :user
end
컨트롤러에 구현
nested_attributes
의 StrongParameter의 대응을 잊지 않는다. class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to @user
else
render :new
end
end
private
def user_params
params
.require(:user)
.permit([*User::ATTRIBUTES, dogs_attributes: Dog::ATTRIBUTES])
end
end
뷰 구현
_〇〇_fields.html.slim
를 만들지 않으면 안 되는 것에 주의해 주세요. app/views/users/
├── _dog_fields.html.slim
├── new.html.slim
└── show.html.slim
/ show.html.slim
p
strong Name:
= @user.name
ul
- @user.dogs.each do |dog|
li = dog.name
=> link_to 'Edit', edit_user_path(@user)
'|
=< link_to 'Back', users_path
/ new.html.slim
h2.py-3 New use
= form_for @user do |f|
.form-group.row
.col-md-3
= f.label :name
.col-md-9
= f.text_field :name, class: 'form-control'
.form-group.row
.col-md-3
= f.label :dogs
.col-md-9.ml-auto
#dogList
= f.fields_for :dogs do |dog|
= render 'dog_fields', f: dog
= link_to_add_association f, :dogs, class: "btn btn-link", data: { association_insertion_node: "#dogList", association_insertion_method: "append" } do
= fa_icon "plus", text: "アイテムを追加"
= f.submit 'Submit', class: 'btn btn-success w-100'
/ _dog_fields.html.slim
.nested-fields.mb-3
.form-row
.col-md-10
= f.text_field :name, placeholder: '名前', class: 'form-control'
.col-md-2
= link_to_remove_association "削除", f, class: "btn btn-danger"
요약
nested_attributes
의 폼 실장을 할 수 있을까 생각합니다! Reference
이 문제에 관하여(Rails x Bootstrap4 x nested_attributes 양식 디자인 패턴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Coolucky/items/b9823a0df5122139d6d6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)