2012-01-11 44 views
5

所以我有一個content_for我的視圖內登錄和在會話控制器,我有render :new當用戶沒有輸入有效的憑據。但是,在render :new的情況下,我會得到一個沒有任何CSS或JS的黑白頁面。這是我content_for樣子在做渲染時,rails content_for不會被執行?

<% content_for :head do %> 
    <%= stylesheet_link_tag "user_sessions/new" %> 
    <%= javascript_include_tag 'user_sessions/new.onready' %> 
<% end %> 

怎麼會出現周圍的工作,以確保當我做render上面的代碼被執行?

回答

9

我的猜測是你沒有在任何地方包括content_for。在app/views/layouts/application.html.erb(或任何佈局您正在使用此頁)請確保你有類似以下內容:

<head> 
    <!-- your regular head content goes here --> 
    <%= content_for :head %> 
</head> 

當你傳遞給content_for塊,塊的內容被存儲到使用別處。不帶塊的調用content_for然後插入存儲的內容。

有關更多信息,請參見the docs for content_for

+0

RonaldOnRails答案應該是接受編輯答案在這裏。 – frandroid 2014-03-04 01:24:22

+0

這個答案對於Rails 3來說是正確的,Rails 3是這個問題的最新版本。 – 2014-04-07 09:41:36

3
<head><%= content_for :head %></head> 

並沒有爲我工作,但

<head><%= yield :head %></head> 

的工作,我想這是做

權只要記住:yield調用的內容,:head是參數content_for,你把你的渲染視圖,所以你可以把代碼段的任何地方application.html你想

+0

這個工作完全按照它的意圖進行......奇怪的是,我不記得在早期版本的Rails中必須這樣做。它可能已經改變。無論如何,謝謝你! – rcd 2013-12-21 02:38:51