Ruby on Rails
Ruby on Rails의 중첩 된 양식
수색…
Ruby on Rails에서 중첩 된 양식을 설정하는 방법
먼저해야 할 일 : 다른 모델과 has_many
관계를 포함하는 모델.
class Project < ApplicationRecord
has_many :todos
end
class Todo < ApplicationRecord
belongs_to :project
end
ProjectsController
:
class ProjectsController < ApplicationController
def new
@project = Project.new
end
end
중첩 된 양식에서는 부모 개체가있는 자식 개체를 동시에 만들 수 있습니다.
<%= nested_form_for @project do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<% # Now comes the part for `Todo` object %>
<%= f.fields_for :todo do |todo_field| %>
<%= todo_field.label :name %>
<%= todo_field.text_field :name %>
<% end %>
<% end %>
우리가 Project.new
로 @project
를 초기화하여 새로운 Project
객체를 생성하는 것과 같은 방법으로 Todo
객체를 생성하는 것과 같은 방법이 필요합니다. 여러 가지 방법이 있습니다 :
Projectscontroller
에서new
메서드로 다음과 같이 작성할 수 있습니다.@todo = @project.todos.build
또는@todo = @project.todos.new
를 사용하여 새Todo
객체를 인스턴스화 할 수 있습니다.또한보기에서 이것을 할 수 있습니다 :
<%= f.fields_for :todos, @project.todos.build %>
강력한 매개 변수의 경우 다음과 같이 매개 변수를 포함 할 수 있습니다.
def project_params
params.require(:project).permit(:name, todo_attributes: [:name])
end
이후, Todo
오브젝트는 생성을 통해 생성됩니다 Project
개체, 그래서 당신은이 일 지정해야 Project
에 다음 줄을 추가하여 모델 :
accepts_nested_attributes_for :todos
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow