2

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

class SplashController < ApplicationController
  layout false
  def index
  end
end

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

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

4

1 回答 1

2

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

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

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

render :text => "OK"

注意:当您响应 AJAX 或 Web 服务请求时,呈现纯文本最有用,这些请求需要的不是正确的 HTML。

更新:

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

查看后将布局设置为 false 将显示 css 和 js 内容,但仍将布局保持为 false。

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

上述的另一种选择也可以:

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

:css您会看到,当 layout 为 false 时,包含您的资产的局部视图是如何被调用的。

于 2013-02-13T13:26:40.343 回答