6

我知道默认情况下,Rails 中的视图使用application.html.erb. 但是,有一个视图我不想使用 中提供的模板application.html.erb,而是在该视图本身中编写所有 HTML。那有可能吗?

4

5 回答 5

9

在控制器操作结束时,添加:

render :layout => false
于 2012-10-24T22:27:47.677 回答
4

对于特定操作:

class SomeController < ApplicationController
  def my_custom_action
    render layout: false
  end
end
于 2012-10-24T22:28:03.447 回答
2

您可以使用自定义布局来实现相同的目的。

例如对于WelcomeController

  1. 创建一个名为welcome.html.erb. app/views/layout/在那里写你的布局代码(不要忘记yield)。由于 railsConvention over Configuration功能,当 rails 渲染任何映射到的视图时WelcomeControllerwelcome.html.erb将覆盖默认application.html.erb布局。

  2. 如果您想以不同的方式命名自定义布局文件。Rails 也允许您这样做。将您的布​​局文件命名为mylayout.html.erb. 中WelcomeController,添加以下代码

    类 WelcomeController < ApplicationController

    布局“我的布局”

    ……

    结尾

  3. 如果您只想为特定操作自定义布局,则在操作的最后一行写render layout: 'mylayout'

于 2014-01-24T22:03:20.987 回答
1

当然,在你的行动中做这样的事情:

def action
  render :layout => false
end

这假设您的控制器中还有其他需要布局的操作。否则,我会layout false在控制器根目录中指定。

如果您有多个不需要布局的操作,我相信您可以做到

layout false, :only => [ :action1, :action2 ]
于 2012-10-24T22:30:05.270 回答
0

您必须确保您的控制器继承自 ApplicationController

class MyCustomController < ApplicationController
于 2018-09-14T18:42:20.150 回答