Rails и Devise - Пространство имен является неинициализированной константой - PullRequest
2 голосов
/ 24 января 2012

Я пытаюсь использовать пространства имен для объявления API.

My rout.rb содержит:

  devise_scope :user do
    namespace :api do
      namespace :v1 do
        match 'log_in', :to => 'token_authentications#log_in', :via => "post"
      end
    end
  end

А мой * token_authentications_controller.rb * выглядит так:

class Api::V1::TokenAuthenticationsController < ApplicationController

...

  def log_in

  ...

  end

...

end

Когда я нажимаю: api / v1 / log_in, я получаю:

Ошибка маршрутизации
неинициализированная константа Api

Так мне нужно где-нибудь объявить пространство имен?

1 Ответ

8 голосов
/ 24 января 2012

Rails ожидает, что пространства имен будут следовать структуре каталогов, если я не ошибаюсь.

Учитывая ваше имя класса для вашего контроллера, Api::V1::TokenAuthenticationsController, rails ожидает, что он будет жить в app/controllers/api/v1/token_authentications_controller.rb.

Если вы просто переместите свой контроллер в нужную папку, я думаю, с вами все будет в порядке.

Вы также можете убедиться, что где-то фактически объявлены модули пространства имен, как, например, рефакторинг вашего контроллера следующим образом:

module Api
  module V1
    class TokenAuthenticationsController

...

    end
  end
end
...