2014-02-09 2 views
0

약간의 문제가 있습니다. 모든 페이지에 메뉴를 추가하려고합니다. 그 이유는 모든 웹 페이지를 업데이트하는 단일 파일을 쉽게 편집 할 수 있기 때문입니다.레일에 메뉴 추가하기 3

<% content_for :menu do %> 
<ul> 
<li> page 1 </li> 
<li> page 2 </li> 
</ul> 
<% end %> 
<%= yield %> 

을 그리고 내 환영/색인에서 내가 가진 : 내 레이아웃/application.html.erb에서

나는 body 태그 사이에, 이것을 가지고입니다

<div id="menu"> 
<%= yield :menu%> 
</div> 

<h1>Welcome to my index page!</h1> 

확실하지 모든 경우 필자가 루트로 갈 때 필요한 것은 링크/인덱스 파일에있는 것만 볼 수 있습니다. 내가 놓친 게 있니?

답변

0

그 반대의 방향이어야합니다. 즉, 응용 프로그램 레이아웃에서 :yield을 호출하고 index 파일에 content_for을 가질 수 있음을 의미합니다.

사실 content_for 태그의 아이디어는 페이지마다 약간 다른 유사 콘텐츠를 허용하지만 레이아웃에서 동일한 이름을 사용하는 것입니다. here

귀하의 경우에 필요한 것은 레이아웃에 부분적으로 있거나 레이아웃 자체에서 메뉴를 가질 수 있다고 생각합니다. 레이아웃은 모든 페이지 볼 수 있기 때문에 메뉴는 각 페이지에 대해 사용할 수 있습니다, 당신은 나중에 수정을 필요로하는 경우, 여전히 당신은

1 한 페이지를 변경해야합니다 - 부분

#app/views/layouts/_menu.html.erb 
<ul> 
<li> page 1 </li> 
<li> page 2 </li> 
</ul> 

#app/views/layouts/application.html.erb 
<%= render partial: 'menu' %> 
<%= yield %> 
2

- 동일한 파일에 모든 필요는

#app/views/layouts/application.html.erb 
<ul> 
<li> page 1 </li> 
<li> page 2 </li> 
</ul> 
<%= yield %> 
0

당신은 당신의 application.html 파일의 <%= yield :menu%>이 있어야합니다. 또한 폴더를 만들 수있다는 등의 메시지 그럼 당신이

#welcome/index.html.erb 
<div class="content"> 
Your Index Content here. 
</div> 


#layouts/application.html.erb 
<%= yield :menu %> 
<%= yield %> 

#shared/menu.html.erb 
<% content_for :menu do %> 
<div id="menu"> 
    <ul> 
    <li> page 1 </li> 
    <li> page 2 </li> 
    </ul> 
</div> 
<% end %> 
뭔가를 시도 할 수 있습니다 당신이 당신의 메뉴를 가질 수있는 (이 "공유"이름을 할 수 있습니다)