我正在 Rails 中构建一个生成器,它生成一个前端和管理控制器,然后将路由添加到路由文件中。我可以让前端使用这个:
m.route_resources controller_file_name
但我不知道如何为嵌套的管理路由(admin/controller_file_name)做同样的事情。有人知道如何生成这些路线吗?
我正在 Rails 中构建一个生成器,它生成一个前端和管理控制器,然后将路由添加到路由文件中。我可以让前端使用这个:
m.route_resources controller_file_name
但我不知道如何为嵌套的管理路由(admin/controller_file_name)做同样的事情。有人知道如何生成这些路线吗?
查看 的代码route_resources
,看起来它不会做任何超出沼泽标准的事情map.resources :foos
。
相反,让我们编写自己的方法来处理这个问题,在原来的基础上
def route_namespaced_resources(namespace, *resources)
resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
sentinel = 'ActionController::Routing::Routes.draw do |map|'
logger.route "#{namespace}.resources #{resource_list}"
unless options[:pretend]
gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
"#{match}\n map.namespace(:#{namespace}) do |#{namespace}|\n #{namespace}.resources #{resource_list}\n end\n"
end
end
end
我们可以将其作为生成器中的本地方法开始,您现在可以使用以下方法调用它:
m.route_namespaced_resources :admin, controller_file_name