【发布时间】:2012-10-24 22:23:15
【问题描述】:
我知道默认情况下,Rails 中的视图使用application.html.erb 中提供的模板。但是,有一种观点我不想使用application.html.erb 中提供的模板,而是在该视图本身中编写所有 HTML。有可能吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 view
我知道默认情况下,Rails 中的视图使用application.html.erb 中提供的模板。但是,有一种观点我不想使用application.html.erb 中提供的模板,而是在该视图本身中编写所有 HTML。有可能吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 view
在控制器动作的最后,添加:
render :layout => false
【讨论】:
render "tree.html.erb"行之前还是之后?
render "tree.html.erb", :layout => false
tree,你可以跳过“tree.html.erb”部分,直接调用render :layout => false
对于特定操作:
class SomeController < ApplicationController
def my_custom_action
render layout: false
end
end
【讨论】:
render 'tree.html.erb', layout: false
您可以使用自定义布局实现同样的目的。
例如对于WelcomeController
在app/views/layout/ 中创建一个名为welcome.html.erb 的自定义布局文件。
在那里写下你的布局代码(不要忘记yield)。由于 rails Convention over Configuration 功能,当 rails 渲染映射到 WelcomeController 的任何视图时,welcome.html.erb 将覆盖默认的 application.html.erb 布局。
如果您想以不同的方式命名自定义布局文件。 Rails 也允许您这样做。将您的布局文件命名为mylayout.html.erb。
在WelcomeController中,添加如下代码
类 WelcomeController 布局“我的布局” .... 结束
如果您只想为特定操作自定义布局,请在操作的最后一行写上render layout: 'mylayout'
【讨论】:
当然,在您的操作中执行以下操作:
def action
render :layout => false
end
这假设您的控制器中还有其他需要布局的操作。否则,我会在控制器根目录中指定layout false。
如果您有多个不需要布局的操作,我相信您可以做到
layout false, :only => [ :action1, :action2 ]
【讨论】:
你必须确保你的控制器继承自 ApplicationController
class MyCustomController < ApplicationController
【讨论】: