3

基本上就是这样。我希望我的Ruby on Rails 3.1应用程序中的大部分视图都可以在没有布局的情况下呈现,因为它们将通过jQuery分配给div,但我不想去每个控制器操作并在respond_to块中设置render :layout => falseRuby on Rails:如何将默认渲染选项:布局更改为“false”?

是否可以将默认的视图渲染更改为:layout => false?我将如何去配置?

谢谢您的帮助

编辑

我也可以有办法解决它沿着线的东西:

if request.xhr? 
    format.html { render :layout => false } 
end 

每隔respond_to代码块执行。

回答

3
class UserController < ApplicationController 
    layout nil # this sets default layout for all actions in this controller 
end 

如果你想要一些更高级的行为(如确定德layaout在执行时间),你也可以通过返回零或有效的布局名称的块:

class UserController < ApplicationController 
    layout lambda{ ...your stuff... } 
end 
+0

但第一选择似乎以纯文本的形式离开页面。我只是想省略layouts/application.html.erb。你可以使用lambda来做到这一点吗? –

+0

这是因为你的布局中有你的stylesheet_link_tag。由于你不包括布局,你不包括CSS。相反,我会创建一个simplest_layout.html.erb,只有一个头(包含css和JS)和一个body标签,然后使用类UserController

+0

Ahhh,课程!谢谢。这似乎是最好的解决方案。那么':layout => false'命令究竟做了什么?它是否保留了applicaction.html.erb的头部和主体?无论如何,我会用你的建议来实现它! –