문제

안녕하세요. 나는 MTI를 신청서에서 구현하려고합니다.나는 사람의 모델과 2 개의 모델이 그것을 상속받습니다 : 클라이언트 및 팀원.팀 구성원을 만들 때 나는 사람 (성 및 성, 전자 메일 등)과 팀 구성원 (팀의 유형, 팀 유형, 팀 유형)을 위해 데이터베이스 vAllues에 저장하려고합니다.나는 중첩 된 속성 양식을 사용하고 있으므로 팀원 양식에서는 사람 필드를 중첩하고 있습니다.Unfortunatellly 저장하려고 할 때 "보호 된 속성을 대량 할 수 없습니다."오류가 발생합니다.누구든지 이것이 어떻게 해결 될 수 있는지 말해 줄 수 있습니까?감사! 모델 :

업데이트 된 TeamMember 클래스하지만 여전히 동일한 오류 또한 people_attributes와 persons_attributes를 시도했고, 이들 중 어느 것도

class TeamMember < ActiveRecord::Base
  has_many :project_team_members
  has_many :projects, through: :project_team_members
  has_one :person, as: :profile, dependent: :destroy
  accepts_nested_attributes_for :person
  attr_accessible :person_attributes, :experience_level, :lead, :qualification, :team
end

class Person < ActiveRecord::Base
  belongs_to :company
  belongs_to :profile, polymorphic: true
  attr_accessible :email, :first_name, :last_name, :phone_number, :profile_id,     :profile_type
end
.

컨트롤러 다음과 같이 :

class TeamMembersController < ApplicationController
  def create
    person = Person.create! { |p| p.profile = TeamMember.create!(params[:team_member]) }
    redirect_to root_url
  end
.

및 뷰 :

<%= form_for(@team_member) do |f| %>
  <%= f.fields_for :person do |ff| %>
    <div>
      <%= ff.label :first_name %>
      <%= ff.text_field :first_name %>
    </div>
    <div>
      <%= ff.label :last_name %>
      <%= ff.text_field :last_name %>
    </div>
    <div>
      <%= ff.label :phone_number %>
      <%= ff.text_field :phone_number %>
    </div>
    <div>
      <%= ff.label :email %>
      <%= ff.text_field :email %>
    </div>
    <div>
      <%= ff.label :company_id %>
      <%= ff.text_field :company_id %>
    </div>
<% end %>
<div class="field">
  <%= f.label :team %><br />
  <%= f.text_field :team %>
</div>
<div class="field">
  <%= f.label :experience_level %><br />
  <%= f.text_field :experience_level %>
</div>
<div class="field">
  <%= f.label :qualification %><br />
  <%= f.text_field :qualification %>
</div>
<div class="field">
  <%= f.label :lead %><br />
  <%= f.check_box :lead %>
</div>
  <div class="actions">
<%= f.submit %>
</div>
.

팀 메무르 컨트롤러 업데이트 (Tiago의 호의 덕분에 해결책)

def new
  @team_member = TeamMember.new
  @team_member.build_person

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @team_member }
  end
end

def create
  @team_member = TeamMember.create!(params[:team_member])
  redirect_to root_url
end
.

도움이 되었습니까?

해결책

중첩 된 양식의 속성을 대량 할당하려면 다음을 지정해야합니다.

class TeamMember < ActiveRecord::Base
  has_many :project_team_members
  has_many :projects, through: :project_team_members
  has_one :person, as: :profile, dependent: :destroy
  :experience_level, :lead, :qualification, :team #what is this line doing??
  accepts_nested_attributes_for :person      
  attr_accessible :person_attributes    
end
.

편집 :

폼을 빌드 해야하는 양식 이전에 호출 된 작업에서.좋아요 :

@team_member = TeamMember.new
@team_member.build_person
.

다음은 @team_member와 연결된 한 사람 (비 지속적이지 않은)을 가질 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top