在rails中提供了namespace的功能,但是如何實現namespace的layout呢?
假如這樣一個場景:
routes.rb中這樣定義:
需要對articles,tags提供一個統一的后臺管理界面,根據rails中的layout功能,猜想是否會有layouts/admin.html.erb這樣一個針對namespace的模板頁,但嘗試后發現根據不行,下面是google到的一個問題:
他也嘗試了同樣的問題,layouts/users.rhtml, layouts/admin_users.rhtml, layouts/admin/users.rhtml,都是no luck.
這里可以使用一個取巧的方法,在controller中可以通過layout 方法來指定使用哪個模板頁,這里可以寫一個BaseController:
在BaseController中指定模板頁為admin.html.erb
然后將articles和tags的Controller都改為繼承自BaseController。
假如這樣一個場景:
routes.rb中這樣定義:
map.namespace :admin do |admin|
admin.resources :articles
admin.resources :tags
end
admin.resources :articles
admin.resources :tags
end
需要對articles,tags提供一個統一的后臺管理界面,根據rails中的layout功能,猜想是否會有layouts/admin.html.erb這樣一個針對namespace的模板頁,但嘗試后發現根據不行,下面是google到的一個問題:
Do controllers in namespaces somehow get their own default layout
file? For instance, the UsersController will use layouts/users.rhtml
if it exists. Is there something similar for Admin::UsersController
or will it default to the same file? I tried layouts/
admin_users.rhtml and layouts/admin/users.rhtml with no luck.
file? For instance, the UsersController will use layouts/users.rhtml
if it exists. Is there something similar for Admin::UsersController
or will it default to the same file? I tried layouts/
admin_users.rhtml and layouts/admin/users.rhtml with no luck.
他也嘗試了同樣的問題,layouts/users.rhtml, layouts/admin_users.rhtml, layouts/admin/users.rhtml,都是no luck.
這里可以使用一個取巧的方法,在controller中可以通過layout 方法來指定使用哪個模板頁,這里可以寫一個BaseController:
class Admin::BaseController < ApplicationController
layout 'admin'
end
layout 'admin'
end
在BaseController中指定模板頁為admin.html.erb
然后將articles和tags的Controller都改為繼承自BaseController。