4

私はここ数時間、非常にばかげた何かに苦しんでいます。ポイントにまっすぐに拍手喝采はありません。これをposts#indexページビューファイルに貼り付けると、次のようになります。

  <p><%= link_to "log out", destroy_user_session_path, :method => :delete %></p>

ブラウザ内でクリックすると、ユーザーは正常にサインアウトします。でも...

ユーザーがサインインした後やユーザーがサインアップした後など、別の場所でこれを行うと、ユーザーは、users#indexと呼ばれるページからログアウトしようとします。次に、ログアウトボタンをクリックしたときにのみこのエラーが発生します。

Unknown action

The action 'show' could not be found for UsersController

私はかなり多くのことを試しました。jqueryとjquer.ulsまたは何かがapplication.jsファイルに含まれています。

これらは私のルートであり、正しいと思います。

Proxima::Application.routes.draw do
  devise_for :users
  resources :users
  resources :dashboard
  resources :posts
  authenticated :user do
  root :to => 'dashboard#index'
end
  resources :welcome
  devise_for :users
  resources :users
  resources :dashboard
  resources :posts
  root :to => 'welcome#index'
end

これはばかげています、私はここで何が起こっているのか理解できません、私は何度もそのばかげたメッセージを受け取ります、そしてそれでも何も起こりません。次に、UsersController内にアクション「show」を実際に書き留めることにしましたが... redirect_towelcome_pathと記述してもログアウトされません。実際にルートURLに再度アクセスして確認します...何かアイデアはありますか?

4

4 に答える 4

0

リンクがまだアクション (GET に応答するアクション):method => :deleteで終わっている理由を調べることをお勧めします。show

link_to でjavascript を正しく設定すると、正常に動作:method => :deleteし、devise#destroyセッション コントローラーのメソッドに移動します。

サインイン/サインアウト後にデフォルトのリダイレクト パスを変更することもできます: https://github.com/plataformatec/devise/wiki/How-To:-Change-the-redirect-path-after-destroying-a-セッション-ie-サインアウト

于 2013-03-24T10:06:27.487 に答える
0

誤って削除してしまった場合

//= jquery_ujs が必要

あなたのapplication.js

于 2014-07-23T05:29:01.870 に答える
-2

したがって、エラーは次のとおりです。

Unknown action

The action 'show' could not be found for UsersController

そこで、コントローラーに入り、showアクションを定義しました。次に、いくつかの Devise ドキュメントを調べたところ、このヘルパーに気付き、それを使用しました: sign_out :user. これは一時的な修正でした:

  def show
    sign_out :user
    redirect_to welcome_path
end

ただし、ユーザーをログアウトしてwelcome_pathにリダイレクトするだけでしたが、別のエラーが発生しました:

Unknown action

The action 'show' could not be found for WelcomeController

そこで、Welcome コントローラーのshowアクションも定義しました。

class WelcomeController < ApplicationController
  def show
    render :index
  end
end

これにより、ユーザーはルート ページにリダイレクトされました。出来上がり!次に、ページのログインとボタンをクリックすると、ページにログインするように求められたことがわかりました。ログアウトに成功し、ユーザーをウェルカム インデックス URL にリダイレクトしました。万歳!:D

ただし、ここで奇妙な部分が発生します。なぜこれが機能するのかわかりません。したがって、このコードを配置するときのルート URL から:

  <p><%= link_to "log out", destroy_user_session_path, :method => :delete %></p>

そして、ログイン後にクリックすると、コントローラーなどに追加の書き込みを行うことなく、正常にログアウトされます。非常にスムーズで作業は必要ありませんが、ユーザーが ROOT URL ではなく他のページからログアウトしようとすると機能せず、上のUsersControllerでこのエラーが発生します。

ログアウト リクエストがUsersControllerで show アクションを要求する理由がわかりません。ユーザー セッションを破棄する GET 要求の場合。sign:out :userつまり、DEVISE が処理する必要があるのに、コントローラー内で指定する必要があるのはなぜですか。この振る舞いを説明してください。

于 2013-01-20T00:03:19.520 に答える