我想为网站的管理员和公共部门设置一对风格指南。
每个都需要自己的布局,其中包含静态html和对erb partials的调用(因此静态页面不会剪切它)。我不需要一个控制器来提供这些页面,我不希望什么是有效的开发内容,使其余的代码混乱。这让我想知道是否有办法直接渲染布局。
免责声明:我很欣赏这不是我应该经常/永远做的事情,而且我知道有很多争论为什么这是一个坏主意。我对这是否可行感兴趣。
我是否可以直接从routes.rb
呈现布局而无需通过控制器?
答案 0 :(得分:7)
出于一些奇怪的原因,我想暂时渲染一个空白的JS文件,并且编写一个控制器对于这种黑客来说感觉太过分了。感谢@genkilabs的回答,我使用了这个3衬垫:
get 'analytics/some_file.js', to: -> (env) do
[200, { 'Content-Type' => 'application/javascript' }, ['']]
end
答案 1 :(得分:2)
我想做一些非常愚蠢的事情,所以如果你也这样做,试试这个有效的例子。
match :movedpage, :to => proc { |env|
if Rails.env.production?
@remote_path = 'http://productionhost.com'
elsif Rails.env.staging?
@remote_path = 'http://staginghost.com'
else
@remote_path = 'http://localhost:3000'
end
[
200,
{"Content-Type" => "text/html"},
[File.read("public/moved_page.html").gsub('@remote_path', @remote_path)]
]
}, :via => :all
其中,moving_page.html是一个静态页面,要求人们更新他们的书签,而@remote_path只需输入<a href="@remote_path">@remote_path</a>
这样的链接。请注意,<%= %>
将无效,因为您没有视图助手。
所以,有足够的绳索让自己陷入困境^ _ ^
答案 2 :(得分:0)
Actualy的答案是 NO ,没有控制器就无法做到。但是看一些简单的解决方法......
这不公平,但应该有效:
假设您已经实施了FooController
任何逻辑。现在,您希望在不创建任何特殊控制器的情况下呈现anypage.html.erb
。方法如下: