Ruby on rails 关闭其中一个操作的布局
我的情况: ReportsController的查看操作应呈现纯html,但不能呈现为文件(以便在浏览器中查看并在之后保存)。因此,对于渲染,我使用view template view.html.erb并需要关闭此操作的任何布局。但在该控制器的其他操作中,布局应保持不变。 仅适用于关闭整个控制器,如下所示:Ruby on rails 关闭其中一个操作的布局,ruby-on-rails,layout,Ruby On Rails,Layout,我的情况: ReportsController的查看操作应呈现纯html,但不能呈现为文件(以便在浏览器中查看并在之后保存)。因此,对于渲染,我使用view template view.html.erb并需要关闭此操作的任何布局。但在该控制器的其他操作中,布局应保持不变。 仅适用于关闭整个控制器,如下所示: ReportsController < ApplicationController layout false 我该怎么办?试试这个: ReportsController <
ReportsController < ApplicationController
layout false
我该怎么办?试试这个:
ReportsController < ApplicationController
layout false
layout 'application', :except => :view
reportscoontroller:视图
这样就可以了
def view
...
render :layout => false
end
在响应块中,添加
布局:false
例如:
respond_to do |format|
format.html { render :layout => false } # your-action.html.erb
end
如果要获取非标准模板,但没有布局,则可以使用:
def non_rest
render template: 'layouts/something_new', layout: false
end
嗯,你绝对不需要那种明确的回报。如果报告有效,是否要呈现布局?此指令似乎工作错误(或意外)。我尝试使用这些参数的一些组合(:only,:except)。但是删除所有动作的所有布局效果很奇怪。我想这是因为nil或false而不是layoutname。系统尝试对所有其他操作使用“controllername”布局,忽略应用程序布局。尝试使用这些参数,您将了解这一切。您是对的,
:只有在布局nil上不能正常工作。不过,我可以通过对布局进行nilling并将其添加回,以使其正常工作。我已经更新了我的答案。David Ortiz的答案是“更正确的”,因为它正确地将布局切换隔离到所讨论的单独操作。我同意@Paul-false
works!谢谢你layout false,only::view
感觉更简洁,可以实现相同的目标,而不会像Antiarchitect提到的那样产生副作用。问题是,你必须为动作中的每种格式指定layout:false
。有答案时生活才美好!:-DHow关于相反-我可以在没有模板的情况下呈现默认布局吗?
def non_rest
render template: 'layouts/something_new', layout: false
end