我知道默认情况下,Rails 中的视图使用application.html.erb
. 但是,有一个视图我不想使用 中提供的模板application.html.erb
,而是在该视图本身中编写所有 HTML。那有可能吗?
5 回答
在控制器操作结束时,添加:
render :layout => false
对于特定操作:
class SomeController < ApplicationController
def my_custom_action
render layout: false
end
end
您可以使用自定义布局来实现相同的目的。
例如对于WelcomeController
创建一个名为
welcome.html.erb
.app/views/layout/
在那里写你的布局代码(不要忘记yield
)。由于 railsConvention over Configuration
功能,当 rails 渲染任何映射到的视图时WelcomeController
,welcome.html.erb
将覆盖默认application.html.erb
布局。如果您想以不同的方式命名自定义布局文件。Rails 也允许您这样做。将您的布局文件命名为
mylayout.html.erb
. 中WelcomeController
,添加以下代码类 WelcomeController < ApplicationController
布局“我的布局”
……
结尾
如果您只想为特定操作自定义布局,则在操作的最后一行写
render layout: 'mylayout'
当然,在你的行动中做这样的事情:
def action
render :layout => false
end
这假设您的控制器中还有其他需要布局的操作。否则,我会layout false
在控制器根目录中指定。
如果您有多个不需要布局的操作,我相信您可以做到
layout false, :only => [ :action1, :action2 ]
您必须确保您的控制器继承自 ApplicationController
class MyCustomController < ApplicationController