2016-05-06 9 views
1

私は、ログインしてサインアップ機能の作業はすべての権利が、動作していないログアウトし、私のサーバーのショーこの問題を解決する方法[DELETE] "/"と一致するルートはありませんか?

<li><a href="/auth/login"><span class="glyphicon glyphicon-log-in"></span> Login</a></li> 
<li><a href="/auth/signup"><span class="glyphicon glyphicon-registration-mark"></span> Sign UP</a></li> 
<li><a href="" ng-controller="AuthController" ng-click="logout()"><span class="glyphicon glyphicon-registration-mark" target="_self"></span> Logout</a></li> 

.. Railsのアプリ

angular.module('rails_api') 
    .controller('AuthController', ['$scope', '$location', '$http', 'Auth', function($scope, $location, $http, Auth){ 
    //auth 
    var config = { 
     headers: { 
     'X-HTTP-Memthod-Override': 'POST' 
     } 
    } 

    $scope.login = function() { 
     Auth.login($scope.user, config).then(function(user) { 
      console.log(user); 
     }, function(error) { 
     }); 

     $scope.$on('devise:login', function(event, currentUser){ 
     $location.path('/'); 
     }); 

     $scope.$on('devise:new-session', function(event, currentUser) { 
      // user logged in by Auth.login({...}) 
     }); 
    } 

    $scope.signup = function() { 
     Auth.register($scope.user, config).then(function(registeredUser) { 
      console.log(registeredUser); // => {id: 1, ect: '...'} 
     }, function(error) { 
      // Registration failed... 
     }); 

     $scope.$on('devise:new-registration', function(event, user) { 
      $location.path('/'); 
     }); 
     } 

     $scope.logout = function() { 
     var config = { 
      headers: { 
       'X-HTTP-Method-Override': 'DELETE' 
      } 
     }; 
     // Log in user... 
     // ... 
     Auth.logout(config).then(function(oldUser) { 
      //console.log("oldUser"); 
      //alert(oldUser.name + "you're signed out now."); 
     }, function(error) { 
      console.log(error); 
     }); 

     $scope.$on('devise:logout', function(event, oldCurrentUser) { 
      $location.path('/'); 
     }); 
     } 
    }]); 

に私のRubyでフロントエンド用の角を使用エラー

Started DELETE "https://stackoverflow.com/users/sign_out.json" for 127.0.0.1 at 2016-05-06 10:17:26 +0300 

ActionController::RoutingError (No route matches [DELETE] "https://stackoverflow.com/users/sign_out.json"): 
    actionpack (4.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' 
    web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call' 
    web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch' 
    web-console (2.3.0) lib/web_console/middleware.rb:18:in `call' 
    actionpack (4.2.6) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' 
    railties (4.2.6) lib/rails/rack/logger.rb:38:in `call_app' 
    railties (4.2.6) lib/rails/rack/logger.rb:20:in `block in call' 
    activesupport (4.2.6) lib/active_support/tagged_logging.rb:68:in `block in tagged' 
    activesupport (4.2.6) lib/active_support/tagged_logging.rb:26:in `tagged' 
    activesupport (4.2.6) lib/active_support/tagged_logging.rb:68:in `tagged' 
    railties (4.2.6) lib/rails/rack/logger.rb:20:in `call' 
    actionpack (4.2.6) lib/action_dispatch/middleware/request_id.rb:21:in `call' 
    rack (1.6.4) lib/rack/methodoverride.rb:22:in `call' 
    rack (1.6.4) lib/rack/runtime.rb:18:in `call' 
    activesupport (4.2.6) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' 
    rack (1.6.4) lib/rack/lock.rb:17:in `call' 
    actionpack (4.2.6) lib/action_dispatch/middleware/static.rb:120:in `call' 
    rack (1.6.4) lib/rack/sendfile.rb:113:in `call' 
    railties (4.2.6) lib/rails/engine.rb:518:in `call' 
    railties (4.2.6) lib/rails/application.rb:165:in `call' 
    rack (1.6.4) lib/rack/lock.rb:17:in `call' 
    rack (1.6.4) lib/rack/content_length.rb:15:in `call' 
    rack (1.6.4) lib/rack/handler/webrick.rb:88:in `service' 
    /home/user/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/webrick/httpserver.rb:140:in `service' 
    /home/user/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/webrick/httpserver.rb:96:in `run' 
    /home/user/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/webrick/server.rb:296:in `block in start_thread' 

それは私のGemfile

source 'https://rubygems.org' 
ruby '2.3.0' 

gem 'rails', '4.2.6' 

gem 'pg', '~> 0.15' 

gem 'sass-rails', '~> 5.0' 
gem 'bootstrap-sass' 
gem 'uglifier', '>= 1.3.0' 
gem 'coffee-rails', '~> 4.1.0' 
gem 'jquery-rails' 
gem 'turbolinks' 
gem 'jbuilder', '~> 2.0' 
gem 'sdoc', '~> 0.4.0', group: :doc 

gem 'rails_admin' 
gem 'devise' 

gem "bower-rails", "~> 0.10.0" 
gem 'angular-rails-templates' 
gem 'angular_rails_csrf' 
gem 'rack-cors', :require => 'rack/cors' 

gem 'faker' 
gem 'pry' 

gem 'carrierwave' 
gem 'dropzonejs-rails' 

group :development, :test do 
    gem 'byebug' 
    gem 'rspec-rails' 
    gem 'factory_girl_rails' 
    gem 'jasmine' 
end 

group :development do 
    gem 'web-console', '~> 2.0' 
    gem 'spring' 
end 

gem 'rails_12factor', group: :production 


source "https://rails-assets.org" do 
    gem "rails-assets-angular-devise" 
end 
01です

Rails.application.routes.draw do 


     resources :images 
     get 'welcome/index' 

     mount RailsAdmin::Engine => '/admin', as: 'rails_admin' 
     resources :posts 

     namespace :api do 
     namespace :v1 do 
      resources :posts 
      resources :users 
     end 
     end 

     devise_for :users 

     root to: 'welcome#index' 
     get '*path' => "welcome#index" 
    end 

routes.rbを

すくいルート

    Prefix Verb URI Pattern      Controller#Action 
        images GET /images(.:format)    images#index 
         POST /images(.:format)    images#create 
       new_image GET /images/new(.:format)   images#new 
       edit_image GET /images/:id/edit(.:format)  images#edit 
        image GET /images/:id(.:format)   images#show 
         PATCH /images/:id(.:format)   images#update 
         PUT /images/:id(.:format)   images#update 
         DELETE /images/:id(.:format)   images#destroy 
      welcome_index GET /welcome/index(.:format)   welcome#index 
      rails_admin  /admin       RailsAdmin::Engine 
        posts GET /posts(.:format)     posts#index 
         POST /posts(.:format)     posts#create 
       new_post GET /posts/new(.:format)    posts#new 
       edit_post GET /posts/:id/edit(.:format)  posts#edit 
        post GET /posts/:id(.:format)    posts#show 
         PATCH /posts/:id(.:format)    posts#update 
         PUT /posts/:id(.:format)    posts#update 
         DELETE /posts/:id(.:format)    posts#destroy 
      api_v1_posts GET /api/v1/posts(.:format)   api/v1/posts#index 
         POST /api/v1/posts(.:format)   api/v1/posts#create 
     new_api_v1_post GET /api/v1/posts/new(.:format)  api/v1/posts#new 
     edit_api_v1_post GET /api/v1/posts/:id/edit(.:format) api/v1/posts#edit 
      api_v1_post GET /api/v1/posts/:id(.:format)  api/v1/posts#show 
         PATCH /api/v1/posts/:id(.:format)  api/v1/posts#update 
         PUT /api/v1/posts/:id(.:format)  api/v1/posts#update 
         DELETE /api/v1/posts/:id(.:format)  api/v1/posts#destroy 
      api_v1_users GET /api/v1/users(.:format)   api/v1/users#index 
         POST /api/v1/users(.:format)   api/v1/users#create 
     new_api_v1_user GET /api/v1/users/new(.:format)  api/v1/users#new 
     edit_api_v1_user GET /api/v1/users/:id/edit(.:format) api/v1/users#edit 
      api_v1_user GET /api/v1/users/:id(.:format)  api/v1/users#show 
         PATCH /api/v1/users/:id(.:format)  api/v1/users#update 
         PUT /api/v1/users/:id(.:format)  api/v1/users#update 
         DELETE /api/v1/users/:id(.:format)  api/v1/users#destroy 
     new_user_session GET /users/sign_in(.:format)   devise/sessions#new 
      user_session POST /users/sign_in(.:format)   devise/sessions#create 
    destroy_user_session GET /users/sign_out(.:format)  devise/sessions#destroy 
      user_password POST /users/password(.:format)  devise/passwords#create 
     new_user_password GET /users/password/new(.:format) devise/passwords#new 
     edit_user_password GET /users/password/edit(.:format) devise/passwords#edit 
         PATCH /users/password(.:format)  devise/passwords#update 
         PUT /users/password(.:format)  devise/passwords#update 
cancel_user_registration GET /users/cancel(.:format)   devise/registrations#cancel 
     user_registration POST /users(.:format)     devise/registrations#create 
    new_user_registration GET /users/sign_up(.:format)   devise/registrations#new 
    edit_user_registration GET /users/edit(.:format)   devise/registrations#edit 
         PATCH /users(.:format)     devise/registrations#update 
         PUT /users(.:format)     devise/registrations#update 
         DELETE /users(.:format)     devise/registrations#destroy 
        root GET /        welcome#index 
         GET /*path(.:format)     welcome#index 

Routes for RailsAdmin::Engine: 
    dashboard GET  /         rails_admin/main#dashboard 
     index GET|POST /:model_name(.:format)     rails_admin/main#index 
     new GET|POST /:model_name/new(.:format)    rails_admin/main#new 
    export GET|POST /:model_name/export(.:format)   rails_admin/main#export 
bulk_delete POST|DELETE /:model_name/bulk_delete(.:format)  rails_admin/main#bulk_delete 
bulk_action POST  /:model_name/bulk_action(.:format)  rails_admin/main#bulk_action 
     show GET   /:model_name/:id(.:format)    rails_admin/main#show 
     edit GET|PUT  /:model_name/:id/edit(.:format)  rails_admin/main#edit 
    delete GET|DELETE /:model_name/:id/delete(.:format)  rails_admin/main#delete 
show_in_app GET   /:model_name/:id/show_in_app(.:format) rails_admin/main#show_in_app 

だから私は本当に問題

+2

は、あなたの質問にroutes'出力と関連する 'routes.rb'ファイルの内容をすくい'追加することはできますか? – Uzbekjon

+0

しました。私はGETメソッド – user3100232

+0

Yeapを使用していますが、それは問題です。 'DELETE'リクエストを送るときに、' GET'でサインアウトするように設定しました。 – Uzbekjon

答えて

0

は、ルートファイルのみHTMLを動作するように、あなたのケースでルートを定義するものです理解していません特に明記しない限り、JSONリクエストではありません。しかし、あなたが作っているリクエスト:Started DELETE "https://stackoverflow.com/users/sign_out.json" for 127.0.0.1 at 2016-05-06 10:17:26 +0300は、あなたのルートファイルが理解できないフォーマットJSONでデータを要求します。

1)あなたはHTML形式ではなく、あなたのコードを通じてJSON形式で要求していることを確認してください:

は今、あなたはこのエラーを取り除くために2つのオプションがあります。

2)経路を変更して、JSON形式にも対応できるようにすることができます。

resources :users, :only => [:show], :defaults => { :format => 'json' } 
+0

はい私のjavascriptのログはこの行を送るhttp:// localhost:3000/users/sign_out.json 404(見つからない)、しかしjsonデータの仕事を伴うPOSTメソッド – user3100232

0

問題は、あなたがあなたのconfig/initializer/devise.rbファイルにサインアウトするGETメソッドを使用することを指定している必要があるということです。次は、タスクを達成する方法をです。

あなたの初期化子でこのラインを持っていないを確認してください:

config.sign_out_via = :get 
+0

私はchenge設定をDELETEメソッドに設定しても動作しません。 2016-05-06 10:49:17 +0300 ActionController :: RoutingError([DELETE] "/"に一致するルートはありません): actionpack(4.2.6)lib/action_dispatch /middleware/debug_exceptions.rb:21:in 'call ' – user3100232

+0

':delete'に変更しないで、その行だけをコメントしてください。また、あなたのコメント 'DELETE"/"'あなたのルート '/'ではなく、 'users/sign_out.json'に削除要求を送ります。 – Uzbekjon

+0

私はこの行にコメントしましたが、失敗しました。 127.0.0に対してDELETE "/users/sign_out.json"を開始しました。1 at 2016-05-06 10:54:55 +0300 ActionController :: RoutingError([DELETE] "/users/sign_out.json"と一致するルートはありません): – user3100232

関連する問題