2012-01-11 13 views
5

ログインするために私のビューの中にcontent_forがあります。ユーザーが有効な資格情報を入力しないと、render :newがあります。しかし、render :newを実行すると、cssやjsのない白黒ページが表示されます。これはレンダリング中にcontent_forが実行されない?

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

のように私のcontent_for見て仕事は私がrenderを行う際に、上記のコードが実行されることを確認するために、周りにあるのかですか?

答えて

9

content_forはどこにも含まれていないと思います。

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

あなたはcontent_forにブロックを渡すと、ブロックの内容が使用されるように格納されていますapp/views/layouts/application.html.erb(またはあなたがこのページのために使用している方のレイアウト)では次のようなものを持っていることを確認してください他の場所。ブロックなしのcontent_forの呼び出しは、その格納されたコンテンツを挿入します。

詳細はthe docs for content_forを参照してください。

+0

RonaldOnRailsの回答が受け入れられるはずですエドの答え – frandroid

+0

この回答は、この質問が尋ねられたときの最新バージョンであったRails 3には正しいです。 –

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

は私のために動作しませんでしたが、

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

は、私はこれがちょうど思い出し

を行う権利だと思い、働いていた:yieldは、コンテンツを呼び出し、:headはのためのパラメータであり、 content_forレンダリングされたビューに置くことで、application.htmlのどこでもコードを置くことができます。

+0

これは意図した通りに機能しました...不思議なことに、私は以前のバージョンのRailsでこのようにしなければならないことを覚えていません。それは変更された可能性があります。それにもかかわらず、これに感謝! – rcd

関連する問題