2014-08-30 2 views
0

Я начал создавать приложение Api для моего рельса. Я в настоящее время создание контроллера Sessions для входа в систему.Нет совпадений маршрутов DELETE Sessions Api

Но по какой-то причине, я получаю эту ошибку

Started DELETE "/api/v1/sessions/?auth_token=6157d3673725013ebddbb5e26e8cd64756949110" 
for 127.0.0.1 at 2014-08-29 18:54:18 -0700 

ActionController::RoutingError (No route matches [DELETE] "/api/v1/sessions"): 

Я не понять, почему это происходит. Выйти, кажется, отлично работает на самом веб-приложении.

Я знаю, что может потребоваться идентификатор в соответствии с рейк-маршрутами, но я не уверен, как это реализовать.

API-КОНТРОЛЛЕР

module Api 
    module V1 
    class SessionsController < ApplicationController 
     skip_before_filter :verify_authenticity_token, 
         :if => Proc.new { |c| c.request.format == 'application/json' } 

     respond_to :json 

     def destroy 
     sign_out 
     render :status => 200, 
      :json => { :success => true, 
         :info => "Logged Out", 
         :data => {} } 
     end 

    end 
    end 
end 

КОНТРОЛЛЕР

class SessionsController < ApplicationController 

    def destroy 
    sign_out 
    redirect_to root_path 
    end 

end 

СЕССИЯ ХЕЛПЕР

def sign_out 
    current_user = nil 
    cookies.delete(:remember_token) 
end 

МАРШРУТЫ

### API Routes 
namespace :api, defaults: {format: 'json'} do 
    scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do 
    resources :sessions, only: [:new, :create, :destroy] 
    end 
end 

RAKE МАРШРУТЫ

api_v1_sessions POST /api/v1/sessions(.:format)       
api/v1/sessions#create {:format=>"json"} 

api_v1_session DELETE /api/v1/sessions/:id(.:format)      
api/v1/sessions#destroy {:format=>"json"} 

ответ

2

От documentation

Вы можете использовать resource вместо помощника resources маршрутов. Он используется для создания маршрутов для уникального ресурса, к которому у вас нет доступа, используя идентификаторы.

namespace :api, defaults: {format: 'json'} do 
    namespace :v1, constraints: ApiConstraints.new(version: 1, default: true) do 
    resource :session, only: [:new, :create, :destroy] 
    end 
end 

который даст вам

GET  /session/new 
POST  /session 
DELETE /session 
+0

Это команда, я использую в настоящее время: завиток -v -H 'Content-Type: приложения/JSON' -H 'Accept: приложения/JSON' - X DELETE http: // localhost: 3000/api/v1/session/\? Auth_token \ = 3b774e0d8f7abdf7dabfcbb45a6ff11be2288d2d –

+0

, но я все еще получаю это сообщение об ошибке: ActionController :: RoutingError (Нет маршрутов, соответствующих [DELETE] "/ api/v1/session"): –

+1

И 'rake routes' показывает маршрут' DELETE '/ api/v1/session' '? – Ahmed

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