2012-05-20 3 views
2

레일 3.2.X를 사용하고 있습니다. 이것은 has_one 관계입니다.레일 3.2 보호 된 속성을 대량 지정할 수 없습니다. r

모든 것이 여기 놨는데 보인다 : 양식에서 게시 무슨

class P < ActiveRecord::Base 
    has_one :r 
    accepts_nested_attributes_for :r 
    attr_accessible :s, :r_attributes 
end 

class R < ActiveRecord::Base 
    attr_accessible :a, :b, :c 
    belongs_to :p 
end 

"p"=>{"s"=>"5/6/2012", "r"=>{"a"=>"hello", "b"=>"world", "c"=>""}} 

단축 P 형태 :

<%= form_for(@p) do |f| %> 
<%= render :partial => "r/form", :locals => { :p_form => f, :r => @p.r } %> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

단축 R 양식 부분

<%= p_form.fields_for(r) do |fr| %> 

이 R.new (params [p] [r])와 같이 R을 작성하면 올바르게 작동합니다. P를 다음과 같이 작성한 경우 P.new (params [p]) R에 대한 보호 속성을 할당 할 수 없습니다 (독립적으로 작동하더라도). r_attributes를 액세스 가능하게 포함 시켰습니다.

아래 지적 정답은

<%= promotion_form.fields_for(:r) do |fr| %> 

답변

4
+0

흥미로운, 당신 말이 맞아,하지만 난 fields_for 사용하고 있는데이 연구를 생성하는 것, r_attributes가 아닙니다. 그게 왜 그랬을까요? – ckarbass

+0

그래서 나는 R을 field_for 형식으로 보낼 수 있다고 생각했습니다. 접두사 r_attributes가 붙은 문자열 리터럴이 전달되어야하는 것입니다. 그것은 문서에서 당신이 개체를 전달할 수 있기 때문에 그것이 처음에는 왜 작동하지 않는지 나에게 불분명하다. – ckarbass

+0

컨트롤러에'@ p.build_r'을 가지고 있습니까? 그렇다면'p_form.fields_for : r do | fr |'을 사용해야합니다. 저는 작은 예제를 만들었습니다 : https://github.com/eicca/attrs_test/blob/master/app/views/customers/_form.html.erb. 또한이 기사를 참조하십시오. http://railstic.com/2009/06/nested-object-forms-with-has_one-relation/ –

관련 문제