2012-11-18 3 views
2

문제점 : 다른 컨트롤러에서 여러보기 페이지를 어떻게 렌더링합니까? 내 뷰/레이아웃/application.html.erb에서 레일 : 수율을 사용하여 여러보기 페이지 호출

, 나는 항복 방법 보기/글/index.html.erb 호출합니다.

<div class='span10'> 
    <%= yield %> 
</div> 

그 위에, 나는 수율 보기/good_posts/index.html.erb 전화를 원했다. 그래서 특정 인덱스 파일에서 나는 content_for 메소드로 모든 코드를 둘러 쌉니다.

<%= content_for :good_post do %> all my content in good_post/index.html.erb <% end %> 

나는 application.html.erb로 돌아가서 yield 메소드를 사용하여 good_post의 색인 파일을 호출하려고했습니다.

<div class='span10'> 
    <%= yield :good_post %> 
</div> 
<div class='span10'> 
    <%= yield %> 
</div> 

이것은 good_post/index가 post/index 맨 위에 렌더링 될 것이라고 생각했지만 작동하지 않았습니다. 게시물/색인 만 올바르게 이전과 같이 렌더링되었습니다. 누군가 이것이 왜 이것을 설명하고이 문제에 접근하는 올바른 방법을 말해 줄 수 있습니까? 도와 줘서 고마워!

+0

캐싱을 사용하고 있습니까? 이 경우'content_for'는 무시됩니다. 그렇지 않으면'<% = yield : good_post %> '대신'<% = content_for : good_post %>'를 시도하십시오. 둘 다 유효하지만 차이가 있는지 확인하십시오. – cdesrosiers

+0

나는 yield와 content_for를 동시에 사용해야한다고 생각했다. 이것이 내가 good_posts/index에있는 content_for를 작성한 이유이며,이 파일을 호출하기 위해 application.html에서 산출했다. –

+0

내용을 정의 할 때'content_for'를 사용해야합니다. 내용을 렌더링 할 때'content_for' 또는'yield'를 사용할 수 있습니다. [this] (http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for) – cdesrosiers

답변

1

@cdesrosiers에서 말한 것처럼 index.html.erb 파일의 이름을 good_posts에서 _index.html.erb으로 변경해야합니다. 그럼 당신은이 같은 응용 프로그램에서이보기를 렌더링 할 수 있습니다

<div class='span10'> 
    <%= render 'good_posts/index' %> 
    <%= yield :good_post %> 
</div> 
<div class='span10'> 
    <%= yield %> 
</div> 

개인적으로, 나는 app/views/posts 폴더에 _good_posts.html.erb 파일에 good_posts 폴더에 index.html.erb 파일을 변경합니다. 코드는 더 좋은 의미를 가지며, posts과 관련되어 있기 때문에 코드를 찾을 수있는 위치를 알 수 있습니다. 그래서, 당신은이를 변경하는 경우,이 코드를 사용 : 당신은 변경해야하는 또 다른이 content_for :good_post입니다

<div class='span10'> 
    <%= render 'posts/good_posts' %= 
    <%= yield :good_post %> 
</div> 
<div class='span10'> 
    <%= yield %> 
</div> 

->content_for :good_posts을, 좋은 게시물 어쩌면 많은 게시물을 가지고 있기 때문에, 당신은 복수형에 게시물을 사용해야하므로.