2014-09-14 2 views
0

중첩 된 속성 + form_for를 사용하여 간단한 프로젝트 및 스택을 빌드합니다.스택 위치 : 중첩 된 속성 및 필드

이제는 코드에 아무런 문제가 없습니다. 모든 작업과 저장이 가능하지만 accepts_nested_attributes_fori의 주석을 제거하거나 오류가 발생하면 모델이 만들어지지 않습니다. (지난 5 일 동안 differente 변형을 시도하지만이 권리를 작성할 수는 없습니다 ..). 컨트롤러에 문제가 있다고 생각합니다. 내 코드 (accepted_nested_attributes없이 작동). 모델 :

class Project < ActiveRecord::Base 
    belongs_to :user 
    has_one :j_project 
    has_one :p_project 

# accepts_nested_attributes_for :p_project, :j_project 

    validates :user_id, :title, presence: true 
end 

보기 :

= form_for(@project) do |f| 
    = f.label :title 
    = f.text_field :title 
    = fields_for @p_project do |fa| 
    = fa.label :requester 
    = fa.text_field :requester 
    = fields_for @j_project do |ffa| 
    = ffa.label :j_login 
    = ffa.text_field :j_login 
    = ffa.label :j_password 
    = ffa.text_field :j_password 
    = f.submit "Save", class: "btn btn-large btn-primary" 

컨트롤러 :

class ProjectsController < ApplicationController 

    def new 
    @project = Project.new 
    @p_project = @project.build_p_project 
    @j_project = @project.build_j_project 
    end 

    def create 
    @project = Project.new(project_params) 
    @project.user = current_user 
    @p_project = @project.build_p_project(p_project_params) 
    @j_project = @project.build_j_project(j_project_params) 
    if @project.save && @p_project.save && @j_project.save 
     flash[:success] = "New project was added successfully" 
     redirect_to user_root_path 
    else 
     render 'new' 
    end 
    end 

    private 
    def project_params 
     params.require(:project).permit(:title) 
    end 

    def p_project_params 
     params.require(:p_project).permit(:requester) 
    end 

    def j_project_params 
     params.require(:j_project).permit(:j_login, :j_password) 
    end 
end 

답변

0

문제점이 유효성 검사이었다 j_project 및 p_project에서 PROJECT_ID - I 델 그들 모두가 잘 작동합니다. 인터넷에서 가이드로 내 simple_form 및 컨트롤러도 편집 할 수 있습니다.하지만 Google에서 찾을 수없는 문제는 유효성 검사와 관련이 있습니다.