2013-10-09 2 views
1

저는 Agile Rails Web Dev 서적을 읽었으며 부분 형식에 대해서는 지금까지 문자열 형식으로 이름을 부를 수있는 것보다 더 많이 배웠습니다. 우리가 객체 이름과 레일을 전달할 수있는 객체들의 집합은 그것을 하나의 집합으로 반복해야한다는 것을 알게 될 것이다. 지금은이 코드를보고 갑자기 모든 I 혼란있어 배운 :언제 인스턴스 변수가 필요한가 부분 문자열에 문자열 이름이 필요한 경우

enter image description here

<%= render @cart %> 

내 질문이 @cart 것입니다, 그것은 'cart'가 아닌 이유는 무엇입니까? 그리고 그것을 어떻게 알았어야합니까?

+1

100 % 확신 할 수는 없으므로 주석을 달았습니다. 그러나 레일은 @cart의 유형에 따라 _cart라는 이름의 부분 검색을 알고 있다고 생각합니다. –

답변

2

Rails Guide 레일은 @cart의 모델 이름을 내부적으로 점검하고, 현재보기 경로에 그 이름 부분을 찾습니다, 당신이 할 때 "@cart 렌더링"고 제안한다.

render : partial의 구현은 실제로 전달 된 객체에서 to_partial_path를 호출합니다. User 객체는 기본적으로 'users/user'를 반환합니다. 따라서 Cart 클래스가 to_partial_path를 구현하여 'layouts/cart'를 반환하는지 확인합니다.

+0

"현재보기 경로에서"? 그러나 그들은이 코드를 응용 프로그램 레이아웃에 작성했습니다. 네, 카트보기 폴더에 _cart_html.erb도 있습니다. –

+1

내 의견을 편집하여 내 의견을 처리했습니다. – davidfurber

2

내가 틀릴 수도 있지만, 뒷 배경의 레일은 to_partial_path 방법이있는 부분을 렌더링합니다. 이 경우에는 @cart이 ActiveRecord 객체이고 모든 ActiveRecord 객체가 to_partial_path에 응답한다고 가정합니다.

템플릿에 추가하여 출력 내용을 확인하십시오. 당신의 부분적인 길이어야합니다.

<%= @cart.to_partial_path %> 
관련 문제