1

ProjectDomain 두 엔티티가 있습니다. Project belongs_to DomainDomain has_many Projects. 그래서 나는 project index view에서 양식을 채 웁니다. accepts_nested_attributes_for :domainproject.rb에 추가하면 텍스트 필드가 보입니다. 해당 라인을 추가하면 텍스트 필드가 사라집니다.레일에 대한 중첩 된 양식 4.0

또한 로그 파일에 다음과 같이 표시됩니다. Unpermitted parameters: domain.

프로젝트 컨트롤러 :

def create 
    @domain = params[:domain][:name] 
    @domain = Domain.find_or_create_by(name: @domain) 
    @project = current_user.projects.new(project_params) 
    @project.domain_id = @domain.id 
    if @project.save 
    end 
end 

def project_params 
    params.require(:project).permit(:name, :user_id, domain_attributes: [:name]) 
end 

보기

<%=simple_form_for @project do |f|%> 
    <%= f.input :name, label: 'Project name:'%> 
    <%= f.simple_fields_for :domain do |d|%> 
     <%= d.input :name, label: 'Domain name:', placeholder: 'domain.co.uk'%> 
    <%end%> 
    <%=f.button :submit, class: 'btn btn-success btn-sm'%> 
    <%end%> 

내가 accepts_nested_attributes_for :domain

매개 변수를 추가하지 않은 경우에만 나는이 얻을 : { "UTF8"=> "✓", " 프로젝트 "=>"테스트 ","도메인 "=> {"name "=>"test123.com "}},"커밋 "=>"프로젝트 만들기 "}

It projects에 내 domain_id을 포함하는 것이 중요합니다. 이 문제를 해결하려면 어떻게해야합니까? 당신의 project_params 방법은 허용하지 않기 때문에

def new 
    @project = ... 
    @project.build_domain 
    ... 
end 

로그의 Unpermitted parameters: domain. 메시지는 다음과 같습니다

답변

1

당신은 당신의 새로운 행동에 fields_for :domain에 사용되는 객체가되도록 도메인을 구축해야 a :domain 매개 변수를 보내지 만 양식에서 보내는 중입니다. 그것은 좋은 생각 일 것입니다, 그것은 단지 경고입니다.