我可以直接从routes.rb渲染布局,没有控制器吗?

Und*_*ion 7 ruby layout routing ruby-on-rails ruby-on-rails-4

我想为网站的管理员和公共部门设置一对风格指南.

每个都需要自己的布局,其中包含静态html的混合和对erb partials的调用(因此静态页面不会剪切它).我不需要一个控制器来提供这些页面,我不希望什么是有效的开发内容,使其余的代码混乱.这让我想知道是否有一种直接渲染布局的方法.

免责声明:我很欣赏这不是我应该经常/永远做的事情,我知道有很多争论为什么这是一个坏主意.我对这是否可能感兴趣.

有没有办法让我直接渲染布局routes.rb而不通过控制器?

Jer*_*ert 8

出于一些奇怪的原因,我想要渲染一个空白的JS文件一段时间,并且编写一个控制器对于这种黑客来说感觉太多了.感谢@genkilabs的回答,我使用了这个3班轮:

get 'analytics/some_file.js', to: -> (env) do
  [200, { 'Content-Type' => 'application/javascript' }, ['']]
end
Run Code Online (Sandbox Code Playgroud)


nsa*_*ave -1

实际上答案是否定的,没有控制器你就无法做到这一点。但请参阅一些简单的解决方法......

这不是很公平,但应该有效:

假设您FooController已经实现了任何逻辑。现在您想要anypage.html.erb在不创建任何特殊控制器的情况下进行渲染。具体方法如下:


  1. 配置到静态页面的路由:

    get '/your/static/page', to: 'foo#anypage'

  2. 落实观点app/views/foo/anypage.html.erb


问题是不可能改变你的视图路径。该路径取决于您在路由中指定的控制器(foo在示例中)。另请注意,它将使用指定的FooController布局进行渲染。

它应该按照惯例工作,您可以在此处阅读相关内容。


更新

我也在这里找到了非常相似的解决方案。对于此类页面,使用 ApplicationController 似乎更合理。(请注意,您无需为其创建操作