Это немного больше, чем я привык, но я надеюсь, что это поможет.
Первым шагом будет определение кода, который выполняется только для вашего пространства имен admin
. Возможно, я бы создал еще один контроллер приложений, возможно, admin_application_controller.rb
, который будет расширен от вашего базового контроллера приложений, а затем расширен от этого контроллера для всех ваших контроллеров администратора. Например.
# your basic applications controller
class ApplicationController < ActionController::Base
protect_from_forgery
# etc
end
# your public controllers subclass it
class UsersController < ApplicationController
# stuff
end
# now your "specialized" admin controller
class AdminApplicationController < ApplicationController
before_filter :setup_asset_paths
def setup_asset_paths
Rails.application.config.action_controller.assets_dir = File.expand_path(File.join(Rails.root, 'admin'))
Rails.application.config.action_controller.javascripts_dir = File.expand_path(File.join(Rails.root, 'admin', 'javascripts'))
Rails.application.config.action_controller.stylesheets_dir = File.expand_path(File.join(Rails.root, 'admin', 'stylesheets'))
Rails.application.config.action_controller.page_cache_directory = File.expand_path(File.join(Rails.root, 'admin'))
end
end
# and your admin controllers extend from THAT instead
class AdminUsersController < AdminApplicationController
# more admin-y stuff
end
Мне очень интересно узнать, работает ли это для вас, а если нет, с какими проблемами вы столкнулись и что вы нашли, так что дайте нам знать! Удачи !!
[Редактировать] Я обновил код выше, чтобы отразить доступных членов:
pp Rails.application.config.action_controller
{:perform_caching=>false,
:assets_dir=>"/Users/BinaryMuse/src/postecho/public",
:javascripts_dir=>"/Users/BinaryMuse/src/postecho/public/javascripts",
:stylesheets_dir=>"/Users/BinaryMuse/src/postecho/public/stylesheets",
:page_cache_directory=>"/Users/BinaryMuse/src/postecho/public",
:helpers_path=>["/Users/BinaryMuse/src/postecho/app/helpers"]}