默认情况下,Rails 可以在文件名中找到具有格式、区域设置和模板语言的视图(所以我可以创建index.de.json.erb
)
是否可以向视图的文件名添加另一个自定义参数?
我想传递当前的子域,所以http://foo.example.com/
会 renderindex.foo.html.erb
和http://bar.example.com/
render index.bar.html.erb
(它们都带有index.html.erb
后备)。
默认情况下,Rails 可以在文件名中找到具有格式、区域设置和模板语言的视图(所以我可以创建index.de.json.erb
)
是否可以向视图的文件名添加另一个自定义参数?
我想传递当前的子域,所以http://foo.example.com/
会 renderindex.foo.html.erb
和http://bar.example.com/
render index.bar.html.erb
(它们都带有index.html.erb
后备)。
我认为您在这里不需要自定义处理程序。您不需要对模板进行一些预置,但您只需要使您的模板成为特定于域的模板。
我会考虑做这样的事情:
# in ApplicationController:
before_filter :set_view_paths
def set_view_paths
self.class.view_paths = Rails.root.join('app', 'views', controller_name, request.subdomain)
end
然后,您必须将foo
域的模板放入foo
每个views/controller_name
路径的文件夹中。
还要检查append/prepend_view_path
文档以在没有域视图的情况下允许默认值。