在执行渲染时,rails content_for没有被执行?

时间:2012-01-11 18:29:03

标签: ruby-on-rails ruby-on-rails-3

所以我的视图中有一个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 %>

当我执行render时,是否有解决方法确保执行上述代码?

2 个答案:

答案 0 :(得分:8)

我的猜测是你没有将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

答案 1 :(得分:4)

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

对我不起作用,但是

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

工作,我想这是做的权利

记住:yield调用内容,而:head是您放置在渲染视图中的content_for参数,因此您可以将代码段放在应用程序的任何位置。你想要的HTML