我有一个控制器,我将布局设置为false:
class SplashController < ApplicationController
layout false
def index
end
end
但是当我加载这个页面时没有任何css - 我认为这与rails如何处理layout false
有关 - 但我目前对rails的了解让我迷失了。
我如何不渲染布局,但仍然加载所有其他资产(css,js等),如果我要加载布局,通常会加载? (*请注意,布局文件没有具体引用任何这些资产)
答案 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
等资源的部分视图。