0

次のコードを書きましたが、動作しますが、ファイルの内容を評価するのではなく、ファイルを含めるより良い方法はありますか? require を呼び出そうとしましたが、ファイルは mainObj のコンテキストで処理されました。

アイデア?

module ActionDispatch
  module Routing
    class Mapper
      def include_routes(file)
        file = File.new("#{Rails.root}/config/routes/#{file}.rb", "r")
        buffer = ""
        while (line = file.gets)
          buffer += line
        end
        file.close

        eval(buffer)

      end
    end
  end
end

個々のファイルは次のようになります

resources :brands do
  collection do
    post :sort
    get :published
    get :unpublished
    get :deleted
  end
  member do
    get :notes
    get :undelete
    get :delete
    post :move_node
    get :get_node_children
  end
  resources :notes, :only => [:new, :create]
end
get "brands/filter/:type" => "brands#filter", :as => 'filter_brands'

ルートファイルは次のようになります

KohcmsV4::Application.routes.draw do

  devise_for :users

  mount_languages

  namespace :admin do

    root :to => 'admin#index'

    include_routes "admin/media"
    include_routes "admin/videos"
    include_routes "admin/roles"
    include_routes "admin/users"
    include_routes "admin/images"
    include_routes "admin/videos"

    language_scope do  

      include_routes "admin/pages"
      include_routes "admin/brands"
      include_routes "admin/pcategories"
      include_routes "admin/products"
      include_routes "admin/procedures"
      include_routes "admin/sections"

    end
  end

  root :to => 'application#index'
  #match '*not_found', to: 'errors#error_404'
end
4

1 に答える 1

0

あなたroutes.rbは次のようなことをすることができます:

Dir["#{Rails.root}/config/routes/*.rb"].each do |route_file|
  load route_file
end

この方法を使用する場合はload、サブ ルーティング ファイルを次のように変更する必要があります。

KohcmsV4::Application.routes.draw do
  namespace :admin do
    resources :brands do
      collection do
      post :sort
      get :published
      get :unpublished
      get :deleted
    end
    ...
  end
end
于 2012-11-28T21:59:06.493 に答える