Rails不使用application.html.erb

时间:2012-10-24 22:23:15

标签: ruby-on-rails ruby-on-rails-3 view

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

5 个答案:

答案 0 :(得分:8)

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

render :layout => false

答案 1 :(得分:4)

针对具体行动:

class SomeController < ApplicationController
  def my_custom_action
    render layout: false
  end
end

答案 2 :(得分:2)

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

e.g。对于WelcomeController

  1. welcome.html.erb中创建名为app/views/layout/的自定义布局文件。 在那里写下你的布局代码(不要忘记yield)。当rails将呈现映射到Convention over Configuration的任何视图呈现时,由于rails WelcomeController功能,welcome.html.erb将覆盖默认的application.html.erb布局。

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

    类WelcomeController&lt; ApplicationController中

    布局'mylayout'

    ...

  3. 如果您只想为特定操作设置自定义布局,请在最后一行记录render layout: 'mylayout'

答案 3 :(得分:1)

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

def action
  render :layout => false
end

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

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

layout false, :only => [ :action1, :action2 ]

答案 4 :(得分:0)

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

class MyCustomController < ApplicationController