-1

pen_attributes에 attr_accessible이 있다고 생각되는 경우에도 "can not assign assign : pen"오류를 방지하기 위해 펜 특성을 종이 모델에 추가해야했습니다.중첩 된 양식을 할당 할 수 없습니다. 작업을 만듭니다.

이제 '알 수없는 특성 : 펜'오류가 발생합니다. 그것은 나를 창조 활동의 두 번째 행으로 안내합니다. 나는 그것을 이해할 수 없다.

기본적으로 용지 새로 만들기 작업을 통해 펜을 만들고 용지에 할당해야합니다.

Paper model 

attr_accessible :name, :size, :line, 
        :pen_attributes, 
         :pen, :colour, :style 

has_many :pens 
accepts_nested_attributes_for :pens 

Pens model 

attr_accessible :name, :size, :line, :paper_attributes, :paper_id 

belongs_to :paper 

<%= simple_nested_form_for @paper do |f| %> 
     <%= f.input :name %> 
     <%= f.input :size, :placeholder => "text" %> 
     <%= f.input :line %> 

      <%= f.fields_for @pen do |h| %> 
      <%= h.input :pen, %> 
      <%= h.input :colour %> 
      <%= h.button :submit, :label => "create" %> 
    <% end %> 
    <% end %> 

Paper Controller 


    def new 
    @user = current_user 
    @paper = @user.paper.build(params[:paper]) 
      @pen = Pen.new(params[:pen]) 
    end 

def create 
    @user = current_user 
    @paper = @user.papers.build(params[:paper]) 
    @pen = @paper.pens.build(params[:pen]) 


    if @paper.save 
     flash[:notice] = "#{@paper.name} Created" 
     redirect_to(:action => "index") 
    else 
     flash.now[:notice] = "Error" 
     render 'new'  
    end 
    end 

{"utf8"=>"✓", 
"authenticity_token"=>"Z8vncB9ewDM1bWiKfsPHOGlkxcGpfhPjv0xpamudIIs=", 
"paper"=>{"name"=>"three", 
"size"=>"three", 
"colour"=>"red", 
"pen"=>{"colour"=>"test", 
"pen"=>"test"}}, 
"commit"=>"Create"} 

답변

0

단수/복수 명명에 약간의 불일치가있는 것 같습니다. (아마도)

attr_accessible :pens_attributes 

뿐만 아니라 :

<%= f.fields_for :pens, @pen do |h| %> 

아마이 도움이

params[:pens] 

희망, 행운

나는 다음과 같은 조정할 필요가 있다고 생각 !

+0

감사합니다. 도움이되었습니다. 이제 시도해 볼 때 펜의 속성을 비워 둘 수 없다는 것을 알려줍니다. 어떤 생각? – Demetri

+0

컨트롤러의 params [: pen]에 대한 모든 참조를 params [: pens]로 변경 했습니까? (그것이 당신이해야했던 조정 중 하나라고 가정하면,보기에서 ...) –