Ruby on Rails路由到控制器不工作

时间:2014-03-20 00:26:25

标签: ruby-on-rails ruby-on-rails-3

尝试使用门卫创建API。当我登录我的帐户并且会话用户经过身份验证并访问我的API

http://localhost:3000/api/v1/trials

我得到一个路由错误页面,上面写着“未初始化的常量TrialsController”和一个rake路由列表。包括:

trials_path    GET    /api/v1/trials(.:format)    trials#index

我正在使用rails版本4.0.3,ruby 2.0.0。这是我的config / routes.rb文件:

MyApp::Application.routes.draw do
  devise_for :users

  use_doorkeeper :scope => 'oauth2' do
  end

  root :to => 'welcome#index'
  scope 'api' do
    scope 'v1' do
      resources :trials
    end
  end
end

我的app / dir包含:

app/
    controllers/
        application_controller.rb
        welcome_controller.rb
        api/
           v1/
               trials_controller.rb

我的tests_controller.rb是:

module Api::V1
  class TrialsController < ::ApplicationController
    doorkeeper_for :all

    def index
      @trials = Trials.all
    end

    def show
      ...
    end

    ...

  end
end

更新: 当我将routes.rb更改为命名空间时,跟踪控制器如下:

  namespace :api do
    namespace :v1 do
      resources :trails
    end
  end

尝试访问时出现“无路由匹配”错误:

http://localhost:3000/api/v1/trials(.json)

(有或没有扩展名。)

我还加入了试验#index:

    def index
      @trials = Trials.all
      respond_to do |format|
        format.json { render :json => @trials }
        format.xml { render :xml => @trials }
      end
    end

也没有运气。

1 个答案:

答案 0 :(得分:1)

我不确定它会如何对抗门卫,但我在应用程序中有类似的API结构。我的路线中有以下内容(与塞尔吉奥所说的相符)

namespace :api, defaults: {format: 'json'} do
  namespace :v1 do
    resources :api_controller_1
    resources :api_controller_2
  end
end

以下是我构建API类的方法:

module Api
  module V1
    class ApiNamedController < ApplicationController
      # code
    end
  end
end