2014-10-02 45 views
1

我試圖用色器件路徑/用戶/ SIGN_OUT但它帶我到一個用戶展示頁面與ID sign_out設計SIGN_OUT路徑不工作的Rails 4.1

Processing by UsersController#show as HTML 
Parameters: {"id"=>"sign_out"} 
Rendered users/show.html.haml within layouts/application (5.0ms) 
Completed 500 Internal Server Error in 9ms 

這是我的路線:

Rails.application.routes.draw do 

    devise_for :fans, controllers: { registrations: "fans/devise/registrations"} 
    devise_for :users, controllers: { registrations: "users/devise/registrations"} 

    devise_scope :fan do 
    get '/auth/facebook_fan/callback' => "fans/devise/omniauth_callbacks#facebook" 
    end 
    devise_scope :artist do 
    get '/auth/facebook_artist/callback' => "users/devise/omniauth_callbacks#facebook" 
    get '/users/auth/stripe_connect/callback' => "users/devise/omniauth_callbacks#stripe_connect" 
    end 

    resources :about 

    resources :rewards, only: :show do 
    resources :pledges, only: [:new, :create, :update] 
    end 

    resources :users, only: [:show, :index] do 
    resources :rewards, only: [:new, :create, :update, :index] 
    resources :pledges, only: [:show, :new, :create] 
    end 
    root "welcome#index" 
end 

在我的路由中我在搞什麼事?或者是別的什麼?

UsersController:

class UsersController < ApplicationController 
    helper_method :user 
    respond_to :js 

    def index 
    respond_to do |format| 
     format.html 
     format.js 
    end 
    end 

    protected 

    def User 
    UserPresenter.new(User.find(params[:id])) 
    end 
end 

Registrationscontroller

class Users::Devise::RegistrationsController < Devise::RegistrationsController 
     def update 
     # For Rails 4 
     account_update_params = devise_parameter_sanitizer.sanitize(:account_update) 
     # For Rails 3 
     # account_update_params = params[:user] 

     # required for settings form to submit when password is left blank 
     if account_update_params[:password].blank? 
      account_update_params.delete("password") 
      account_update_params.delete("password_confirmation") 
     end 

     @user = User.find(current_user.id) 
     if @user.update_attributes(account_update_params) 
      set_flash_message :notice, :updated 
      # Sign in the user bypassing validation in case their password changed 
      sign_in @user, :bypass => true 
      redirect_to user_path(@user) 
     else 
      render "edit" 
     end 
     end 

     def new 
     @user = User.new 
     respond_to do |format| 
      format.html 
      format.js 
     end 
     end 
    end 

登出路徑和鏈接:

destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy 

= link_to "Sign out", destroy_user_session_path 
+0

什麼是錯誤? – kobaltz 2014-10-02 22:35:29

+0

當我嘗試訪問'users/sign_out'時,它應該銷燬會話。相反,它將我帶到一個顯示頁面,其ID爲'sign_out' – TuxedoTomson 2014-10-02 22:38:32

+0

有可能沒有看到控制器是您正在重定向到用戶顯示路徑。你能發佈一些控制器代碼嗎? – kobaltz 2014-10-02 22:40:20

回答

2

你signout鏈接應該soemthing這樣<%= link_to 'Logout', destroy_user_session_path, method: :delete %>