0

デバイスとユーザーのコントローラーがあります

ルート.rb

  devise_for :users
  
  resources :users do
    resources :blogs
  end

users_controller.rb

class UsersController < ApplicationController
  respond_to :html, :xml, :json

  def create
    @user = User.create(params[:user])
  end

  def show
    @user = User.find(params[:id])
    @asset = Asset.find(params[:id])
    respond_with [@user, @asset]
  end

  def update
    @user = User.find(params[:id])
    @user.update_attributes(params[:user])
    respond_with @user
  end
end

私が訪問するときhttp://localhost:3000/users/sign_out

私は得る

ActiveRecord::RecordNotFound in UsersController#show

Couldn't find User with id=sign_out

アップデート:

                   users GET    /users(.:format)                                   users#index
                         POST   /users(.:format)                                   users#create
                new_user GET    /users/new(.:format)                               users#new
               edit_user GET    /users/:id/edit(.:format)                          users#edit
                    user GET    /users/:id(.:format)                               users#show
                         PUT    /users/:id(.:format)                               users#update
                         DELETE /users/:id(.:format)                               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 DELETE /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
                         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
                         PUT    /users(.:format)                                   devise/registrations#update
                         DELETE /users(.:format)                                   devise/registrations#destroy

解決策はありますか?

4

2 に答える 2

4

セッションが DELETE メソッドによって破棄されたために発生します。

あなたからrake routes

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

にアクセスするときはhttp://localhost:3000/users/sign_out、GET を使用します。

で方法を変更できますinitializers/devise.rb。設定config.sign_out_viaするだけ:get

于 2012-04-29T01:11:46.943 に答える
0

routes.rb ファイルと生成されたルートが一致していないようです。ルートは順番に評価され、最初に一致したルートが提供されます。

カスタム ユーザー ルートの前にデバイス ルートが必要です。このようなもの...

        new_user_session GET    /users/sign_in(.:format)                           devise/sessions#new
            user_session POST   /users/sign_in(.:format)                           devise/sessions#create
    destroy_user_session DELETE /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
                         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
                         PUT    /users(.:format)                                   devise/registrations#update
                         DELETE /users(.:format)                                   devise/registrations#destroy
                   users GET    /users(.:format)                                   users#index
                         POST   /users(.:format)                                   users#create
                new_user GET    /users/new(.:format)                               users#new
               edit_user GET    /users/:id/edit(.:format)                          users#edit
                    user GET    /users/:id(.:format)                               users#show
                         PUT    /users/:id(.:format)                               users#update
                         DELETE /users/:id(.:format)                               users#destroy

一貫性がないように見えるため、ルートファイルが投稿したものと同じであることを確認します。

于 2012-04-27T16:39:36.247 に答える