2013-12-09 32 views
0

我有我的app/controllers设立这样目录下:api/v1/sessions_controller.rb我再有一个BaseControllerapi/v1/base_controller.rb命名错误的轨道 - 创建API控制器

我然后设置每个类看成这样:

module Api 
    module V1 
    class BaseController < ApplicationController 
     respond_to :json 
     before_action :default_json 

     protected 

     def default_json 
     request.format = :json if params[:format].nil? 
     end 

     def auth_only! 
     render :json: {}, status: 401 unless current_user 
     end 
    end 
    end 
end 

然后会话:

module Api 
    module V1 
    class SessionsController < BaseController 

     def create 
     user = User.authenticate(params[:user_name], params[:password]) 
     if sign_in(user) 
      set_up_cookie(user) 
      render json: create_session_data, status: 201 
     else 
      invalid_user_crendentials 
     end 
     end 
    end 
    end 
end 

测试都设置了同样的方式,例如会话测试:

require 'spec_helper' 

describe Api::V1::SessionsController do 
    before(:each) do 
    @user = FactoryGirl.create(:user) 
    end 

    context "Create a session" do 
    it "should NOT create a session" do 
     post :create 
     response.response_code.should == 401 
    end 
    end 

end 

的错误:

'<module:V1>': uninitialized constant Api::V1::BaseController (NameError) 

回答

0

尝试格式化您的命名稍有不同。

class Api::V1::BaseController < ApplicationController 
    # code 
end 

class Api::V1::SessionsController < BaseController 
    # might need to name this Api::V1::BaseController 
end 
+0

同样的错误:' '':未初始化不断阿比:: V1 :: BaseController(NameError)' – TheWebs

+0

你也尝试添加了BaseController完整的类路径就像在我评论? (只要确保在我看起来更深之前) – jstim