2010-10-06 80 views
0

我正試圖在此刻設計我的紅寶石Rails應用程序。我創建了視圖/佈局/ posts.html.erb,這些都是我的PostsController的視圖。我以爲views/layouts/application.html.erb是爲了適用於所有佈局?

我想添加一個始終位於頁面頂部的主要欄,而不管用戶正在看什麼視圖。我認爲這是views/layouts/application.html.erb的目的。

這似乎同意我: http://jacqueschirag.wordpress.com/2007/08/02/rails-layout-and-nested-layout-basics/

  • 整個Rails應用程序(所有控制器的所有視圖)將 使用此佈局:

    views/layouts/application.rhtml

  • 所有單個控制器內的視圖將使用此佈局。例如, 示例,weelome_controller.rb的 的佈局將使用此 佈局。請注意,在「_controller」被 離開了佈局:

    views/layouts/welcome.rhtml

我在做什麼錯?

以下是我在我的application.html.erb

<div id="top-bar"> 
     <div id="user_nav"> 
     <% if current_user %> 
      <%= link_to "My Profile", current_user %> 
      <%= link_to "Logout", logout_path %> 
     <% else %> 
      <%= link_to "Register", new_user_path %> 
      <%= link_to "Login", login_path %> 
     <% end %> 
     </div> 
    </div> 
    <%= yield %> 

回答

5

無論你的佈局,application.html.erbposts.html.erb應該呈現主杆爲部分非常有幫助:

<%= render :partial => 'layouts/main_bar' %> 

所有佈局包含包裝頁面的<html>元素;你沒有一個佈局環繞另一個佈局。

+0

謝謝,但隨着代碼我越來越:「缺少局部佈局/ main_bar」 – 2010-10-06 22:02:33

+0

Err ..我忘了在文件名中加下劃線。感謝您的幫助。自從你演示瞭如何做到這一點之後,我會將這個答案標記爲正確答案。 – 2010-10-06 22:06:11

1

好信息的機構是正確的 - 的意見/佈局/ application.html.erb「應該工作得很好。

您是否使用<%= ..... %>包含了「主要欄」內容(即,您是否缺少佈局文件中的=登錄?) 並且,您是否在佈局文件的某處包含了<%= yield %>聲明?

此外,您使用的Rails版本是什麼?

你應該找到這個Layouts and Rendering in Rails於前往的軌道意見的基礎知識和佈局

+0

我已將我的application.html.erb文件的主體添加到主要問題中。我正在使用Rails 3.我剛剛意識到我已在我的post.html.erb佈局中擁有所有。我應該嗎? – 2010-10-06 21:49:04

1

我很困惑...你還有views/layouts/posts.html.erb嗎?如果是這樣的話,所有從PostsController渲染的視圖都將使用此佈局,而不是views/layouts/application.html.erb

+0

哦,好的。我只是誤解了它的工作原理。 – 2010-10-06 21:51:42

+1

這個「答案」應該是一個評論 – Zabba 2010-10-06 21:55:10

相關問題