2013-05-28 2 views
1

Так что я только начинаю с RoR и полагаю, что я делаю базовый блог с конечными точками API. Проблема заключается в том, что мои запросах API, кажется, направляются к неправильному контроллеру,Rails namespaced route to wrong Controller

У меня есть следующий в моем routes.rb

Blog::Application.routes.draw do 

    namespace :api do 
    namespace :v1 do 
     resources :articles 
    end 
    end 

end 

У меня также есть controllers/api/v1/articles_controller.rb, который имеет следующее содержание:

module API 
    module V1  
    class ArticlesController < ApplicationController 
     respond_to :json 

     def index 
     respond_with Article.all 
     end 

    end 
    end 
end 

Моя логика говорит, что, когда я ударил http://localhost:3000/api/v1/articles, это должно быть контроллер реагировать, однако фактический контроллер, который отвечает это один в корне контроллеров (controllers/articles_controller.rb), а не один в /api/v1 путь. Когда я удалю контроллер, который на самом деле отвечает, вместо этого я получу uninitialized constant Api::V1::ArticlesController.

Даже rake routes дает мне ожидаемые маршруты, однако на самом деле удары по этим оконечным точкам не удаются. Выход rake routes является следующее:

api_v1_articles GET /api/v1/articles(.:format)   api/v1/articles#index 
        POST /api/v1/articles(.:format)   api/v1/articles#create 
new_api_v1_article GET /api/v1/articles/new(.:format)  api/v1/articles#new 
edit_api_v1_article GET /api/v1/articles/:id/edit(.:format) api/v1/articles#edit 
    api_v1_article GET /api/v1/articles/:id(.:format)  api/v1/articles#show 
        PUT /api/v1/articles/:id(.:format)  api/v1/articles#update 
        DELETE /api/v1/articles/:id(.:format)  api/v1/articles#destroy 

Единственный подобный вопрос я нашел на ТАК nested namespace route going to wrong controller однако, нет ответа принимается там, и это был год. Возможно, еще одна попытка поможет решить эту проблему.

ответ

3

Ваш модуль API, но Rails ищет Api. Модули Ruby чувствительны к регистру.

+0

Я бы никогда не заметил это сам. благодаря – zatatatata