현재 저는 has_many Projects 및 has_many Projects라는 세 가지 모델을 가지고 있습니다. 저는 현재 사용자와 파트 사이에 관계 모델 (Part_Item)을 구축 중입니다.Form_for 복수 관계 구축
간체 모델 : 사용자가 사용자 및 부품 사이의 관계를 생성하는 I 제작이 버튼을 누를 수있을 것 프로젝트 페이지에서
class User
has_many :projects
has_many :part_items
end
class Project
belongs_to :user
has_many :parts, dependent: :destroy
accepts_nested_attributes_for :parts, :reject_if => lambda { |a| a[:name].blank? }, allow_destroy: true
end
class Part
belongs_to :project
has_many :part_items
end
class PartItem
belongs_to :user
belongs_to :part
end
. 이것은 사용자가 이미 사용하고있는 부분을 볼 수 있도록하기위한 것입니다. 한 부분 만 있다면 다음을 쓸 수 있습니다 :
<%= form_for(current_user.part_items.build(part_id: @part.id), remote: true) do |f| %>
<div><%= f.hidden_field :part_id %></div>
<%= f.submit "I Made It", class: "btn btn-small btn-primary" %>
<% end %>
이것은 프로젝트의 중첩 된 속성 인 많은 부분에서 작동하지 않습니다.
질문 : 1. 어떻게 형태의 단지 일부 항목의 해시를받을 수 있습니까? 나는 시도했다 :
<%= @project.parts.each do |part| %>
<div><%= hidden_field_tag :part_id, part.id %></div>
<% end %>
그러나 이것은 단지 마지막 part_id를 움켜 잡는다.
2. PartItem 컨트롤러에 create 메소드가 있습니까? PartItem 컨트롤러에서 내 작업을 설정하는 방법에 대한 조언이나 방향이 있으면 감사하겠습니다. 현재 나는 오직 다음을 가지고 있습니다 :
def create
@part = Part.find(params[:part_id])
current_user.save_part!(@part)
redirect_to root_url
end
하나의 부품을 저장하는 데는 작동하지만 여러 부품을 저장하는 데는 적합하지 않습니다.
응용 프로그램이 라이브 모드 인 경우 <% = f.hidden_field : part_id, part.id %> –
으로 업데이트하면 실제로 시도하려는 내용을 쉽게 알 수 있습니다. –
@NitinJ 업데이트 됨 <% = hidden_field_tag : part_id, part.id %> f.hidden_field는 오류를 발생시킵니다. 그러나 마지막 part_id 만 잡을 수 있습니다. 라이브 모드에서는 기본적으로 중첩 된 속성으로 파트가 포함 된 프로젝트가 있습니다. 나는 파트와 파트 사이의 관계를 만들 수 있도록 파트에서 part_ids를 수집하여 PartItem 컨트롤러에 제출하려고합니다. – ChrisBarthol