2017-01-25 8 views
0

Итак, я искал пространство имен для нескольких папок в проекте.Ошибка маршрутизации для двухуровневого контроллера глубины (неинициализированная константа)

Когда пространство имен глубоко 1-слойные, у меня нет никаких проблем, но как только я рамка маршрута вниз в другую папку глубже (и соответствующий контроллер папок/имена), я получаю эту ошибку:

Routing Error uninitialized constant Individuals

Что я имею в виду глубину папки, принимает tyres_controller.rb, и этот слой глубиной в проекте:

  • 1-Layer app/controllers/<1st_level_deep>/tyres_controller.rb

  • 2-Layers app/controllers/<1st_level_deep>/<2nd_level_deep>/tyres_controller.rb

Вот два сценария:

1-Layer Deep Namespaced Контроллер

app/controllers/tyre_checks/tyre_checks_controller.rb

module TyreChecks 
    class TyreChecksController < ApplicationController 
    ... 
    end 
end 

routes.rb

scope module: 'tyre_checks' do 
    resources :tyre_checks, only: [:new, :create] do 
    end 
end 

... 

match '/tyre-checks', to: 'tyre_checks/tyre_checks#new', via: :get, as: :start_tyre_check 

2-слоя Глубокий Namespaced Контроллер

app/controllers/tyre_checks/individuals/tyre_checks_controller.rb

module TyreChecks 
    module Individuals 
    class TyreChecksController < ApplicationController 
    ... 
    end 
    end 
end 

routes.rb

scope module: 'tyre_checks' do 
    scope module: 'individuals' do 
    resources :tyre_checks, only: [:new, :create] do 
    end 
    end 
end 

... 

match '/individuals/tyre-check', to: 'individuals/tyre_checks/tyre_checks#new', via: :get, as: :start_tyre_check 

ЕСЛИ вы просили меня GUESS

  • Я думаю, что это что-то делать с этой частью и тем, как Rails интерпретирует дополнительные / в запросе в конце individuals :

to: 'individuals/tyre_checks/tyre_checks#new', via: :get, as: :start_tyre_check

+0

вы можете попробовать определения контроллера, как 'класса TyreChecks :: Частным лицам :: TyreChecksController Sajan

ответ

1

Я понял, что сделал, что было легко сделать при определении маршрута, ввел меня в заблуждение на основе исходного совпадающего URL-адреса (match '/individuals/tyre-check').

По существу, если вы посмотрите на структуру контроллера, это пространство имен, как например:

module TyreChecks 
    module Individuals 
    class TyreChecksController < ApplicationController 
    ... 
    end 
    end 
end 

Что при переводе в формат controller#action является:

tyre_checks/individuals/tyre_checks#action

но то, что я сделал, Поставка:

individuals/tyre_checks/tyre_checks#action

Я перевернул их неправильно. Это была первая часть я написал, что ввел в заблуждение меня здесь:

match '/individuals/tyre-check'

Все теперь отсортированы по алфавиту;)

 Смежные вопросы

  • Нет связанных вопросов^_^