搜索了几个小时之后,我在Stack Overflow上发布了我的第一个问题。
鉴于:我有以下route.rb:
resource: :non_namespaced_resource
namespace :namespaced_resource do # an example could be :admin
resources :one_nested_resource
resources :another_nested_resource
end
期望结果:命名空间资源是否使用自己的资产,非命名空间资源使用默认资产,如下所示:
# non-namespaced
/public
/public/images
/public/javascripts
/public/stylesheets
# namespaced
/admin
/admin/images
/admin/javascripts
/admin/stylesheets
我看到有关更改config/environments/*.rb
或config/application.rb
的信息,并使用类似下面的内容,但根据命名空间找不到任何示例。
请记住,只有两个命名空间ADMIN和PUBLIC。
config.action_controller.asset_path
config.action_controller.asset_dir
config.action_controller.javascripts_dir
config.action_controller.stylesheets_dir
config.action_controller.images_dir
问题:看来这应该是可能的。所以我的问题是,这可能吗?如果是这样,怎么样?提前谢谢。
答案 0 :(得分:1)
这比我习惯的更多,但我希望它有所帮助。
第一步是识别仅为您的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"]}