我想使用`layout false`但我还是想使用通常在渲染布局时加载的CSS - 我该怎么做?

时间:2013-02-13 13:02:07

标签: ruby-on-rails-3 layout asset-pipeline

我有一个控制器,我将布局设置为false:

class SplashController < ApplicationController
  layout false
  def index
  end
end

但是当我加载这个页面时没有任何css - 我认为这与rails如何处理layout false有关 - 但我目前对rails的了解让我迷失了。

我如何不渲染布局,但仍然加载所有其他资产(css,js等),如果我要加载布局,通常会加载? (*请注意,布局文件没有具体引用任何这些资产)

1 个答案:

答案 0 :(得分:2)

默认情况下,如果使用:text选项,则会在不使用当前布局的情况下呈现文本。如果您希望Rails将文本放入当前布局,则需要添加:layout =&gt;真实的选择。

由于您只需要显示的信息,我建议使用:text进行渲染。

您可以使用:text选项将纯文本(完全没有标记)发送回浏览器:

render :text => "OK"

注意:当您回复期望不是正确HTML的AJAX或Web服务请求时,渲染纯文本最有用。

更新:

此外,如果您希望显示资产但仍然布局应为false,则必须在使资产可用后将布局呈现为false。这意味着您进行一些视图,然后在那里定义所需的css和js文件,然后从控制器调用该视图,然后将布局设置为false。

在视图之后将布局设置为false将显示css和js的内容,但仍然会将布局设置为false。

但是在显示包含css和js的视图之前将布局设置为false将根本不包含资源。

上述其他选择也适用:

css : <%= eval("render :partial => 'myurl/blah', :formats=> [:css], :layout => false").dump.html_safe %>

您会看到,当布局为false时,如何调用包含:css等资源的部分视图。