2012-04-01 2 views
0

객체를 부분으로 전달한 다음 다른 부분으로 다시 전달하는 방법이 궁금합니다. 메신저 hartl 책을 따르는 메신저이며 이것은 선택적인 운동 이었지만 ive super stuck되었습니다. 나는 책에서 ..레일을 객체를 부분으로 전달한 다음 다른 부분을 전달합니다.

<%= form_for(@user) do |f| %> 
    <%= render 'fields', object: f.object %> 

<% end %> 

있는 경우

는, 상기 오브젝트와 동일한 우리는 상기 부분에서 변수의 이름과 동일한 키 값의 해시를 사용하는 말했다. 그래서이 _fields.html.erb 의미 키 '객체'가 존재해야하며 f.object

<%= render 'shared/error_messages', object: ?????? %> 

<%= object.label :name %> 
<%= object.text_field :name %> 

<%= object.label :email %> 
<%= object.text_field :email %> 

의 값을 가지고 있어야하지만 난 키를 검색하려고 할 때, 나는 라인에 오류가

<%= object.label :name %> 

undefined method `label' for #<User:0x007f86000110c0> 

이 왜 그렇게 던져 않습니다 말한다? 나는 열쇠를 '대상'으로 참조 할 수 있다고 생각했다.

또한 무엇을 대신 할 것입니까? 와. 위의 오류를 복제하기 위해 나는 ??????를 꺼냈다. 하지만 다음 부분적인 'object'가 정의되어 있지 않다는 또 다른 오류가 발생합니다. f는 더 이상 존재하지 않기 때문에 f.object와 같은 것을 사용할 수 없습니다. 어떻게하면 다음 부분으로 넘어갈 가치를 얻을 수 있습니까?

덕분에 많은 =)

답변

2

글쎄, 당신은 object: f.object 전달하고 있으며, f.objectUser이다. 따라서 object.label으로 전화를 시도하지만 User에는 label 방법이 없습니다. object: f.object, f: f을 전달하면 f.label으로 전화 할 수 있습니다.

+0

이 총체적인 의미를가집니다. 고맙습니다! 나는 결국 채웠다 ???????? '객체'와 모든 것이 작동합니다. 고마워요! – Sasha

관련 문제