중첩 된 양식의 레벨을 고치 및 테이블로 성공적으로 구현했습니다. 그러나 다른 중첩 수준을 수행하는 방법에 대한 내 마음을 감싸는 데 어려움을 겪고 있습니다. 내 문제는 테이블을 사용하여이를 수행하는 방법입니다. 그리고 아마도 테이블은 전혀 쓸 방법이 아닙니다. 초보자를 도와 주셔서 감사합니다.난간 및 중첩 된 다중 레벨 중첩 된 양식
class Profession < ApplicationRecord
has_many :procedure_categories, dependent: :destroy
accepts_nested_attributes_for :procedure_categories, allow_destroy: true
end
그리고 :
class ProcedureCategory < ApplicationRecord
belongs_to :profession
has_many :procedures
accepts_nested_attributes_for :procedures, allow_destroy: true
end
그리고 :
여기class Procedure < ApplicationRecord
belongs_to :procedure_category
end
내 최고 수준의 양식 코드 :
<%= form_for(@profession) do |f| %>
<%= render 'shared/profession_error_messages' %>
<%= f.label :profession %>
<%= f.text_field :profession, class: 'form-control' %>
<%= f.label :description %>
<%= f.text_field :description, class: 'form-control' %>
<%= f.label :active, class: "checkbox inline" do %>
<%= f.check_box :active %>
<span>Active profession?</span>
<% end %>
<table class='table'>
<thead>
<tr>
<th>Category</th>
<th>Description</th>
<th>Display Order</th>
<th>Selection Type</th>
<th>Delete</th>
<th>Edit</th>
</tr>
</thead>
<tbody class="categories">
<%= f.fields_for :procedure_categories do |procedure_category| %>
<%= render 'procedure_category_fields', f: procedure_category %>
<% end %>
</tbody>
</table>
<%= link_to_add_association 'Add Category', f, :procedure_categories,
data: { association_insertion_node: '.categories', association_insertion_method: :append } %>
<br><br>
<%= f.submit "Save", class: "btn btn-primary" %>
<% end %>
여기
내 모델입니다
그리고 다음 부분 한 수준 아래 :
<tr class="nested-fields">
<td><%= f.text_field :category, class: 'form-control' %></td>
<td><%= f.text_field :description, class: 'form-control' %></td>
<td><%= f.text_field :display_order, class: 'form-control' %></td>
<% cs = options_for_select(controls, f.object.selection_type) %>
<td><%= f.select :selection_type, cs, class: 'form-control' %></td>
<td><%= link_to_remove_association "Remove Category", f %></td>
<% if f.object != nil %>
<td><%= link_to "Category", edit_procedure_category_path(@profession,f.object) %><td></td>
<% end %>
</tr>
그래서, 나는 (절차)를 중첩의 최종 레벨을 구현하는 방법과 사투를 벌인거야.
청취 해 주셔서 감사합니다.
class Profession < ApplicationRecord
has_many :procedures, through: categories
has_many :categories, dependent: :destroy
accepts_nested_attributes_for :categories, allow_destroy: true
end
이 category
class Category < ApplicationRecord
belongs_to :profession
has_many :procedures
accepts_nested_attributes_for :procedures, allow_destroy: true
end
이 procedure_category
모델의 이름을 바꿉니다 : 그리고 여기에 사용 has_many :through
에서 읽기 : https://github.com/nathanvda/cocoon_simple_form_demo 상세한 답변 – nathanvda