我有一个包含大量资源的Rails应用程序。
该应用程序分为两部分:裸域中存在公共区域:
example.com
管理员版本驻留在管理员子域名中:
admin.example.com
每个资源控制器都有标准的CRUD操作,这些操作可供登录并位于管理子域中的管理员用户使用,包括index
和show
操作的管理员特定视图。
面向公众的区域对每个资源也有index
和show
个操作,但他们的观点与管理视图的非常不同。
因此,我需要针对每个资源显示不同的index
和show
视图,具体取决于子域。
如何在逻辑运算符检查当前子域的同时避免乱丢我的控制器?将每个控制器拆分为单独的管理员和公共口味是没有意义的,因为所有不同的是为index
和show
呈现的视图。
答案 0 :(得分:2)
一种选择是为每个子域app/views/admin
创建一个视图文件夹,并将该子域的所有视图文件放入其中,例如: app/views/admin/foos/index.html.erb
。
然后使用prepend_view_path
更改基于子域的路径,如下所示:
class ApplicationController < ActionController::Base
before_filter :prepend_view_paths
def prepend_view_paths
subdomain = request.subdomain
prepend_view_path "app/views/#{subdomain}"
end
end
prepend方法将给定路径添加到队列的前面,如果找不到,则会在默认路径中搜索该文件。
警告:代码未经过测试