2

deviseは自分のアプリケーションで使用しています。

ユーザーのログイン中にウェルカムメッセージをポップアップしたい。

だから私の中で私application_controller.erbは定義しました:

class ApplicationController < ActionController::Base
  protect_from_forgery
  before_filter :authenticate_user!

  def after_sign_in_path_for(user)
    alert('Welcome!')
  end

  def after_sign_out_path_for(user)
    new_user_session_path
  end
end

アプリにサインインしようとすると、エラーが発生しました。

ArgumentError in Devise::SessionsController#create

wrong number of arguments (1 for 0)
Rails.root: /home/alon/alon/todolist

Application Trace | Framework Trace | Full Trace
app/controllers/application_controller.rb:14:in `after_sign_in_path_for'
4

3 に答える 3

4

デフォルトでは、devise はフラッシュメッセージを追加します。フラッシュメッセージを設定する必要はありません。ビューにフラッシュメッセージを表示するだけです。以下のコードを試してください。

app/views/layouts/application.html.erb で

<% flash.each do |type, message| %>
  <div class="flash">
     <%= message %>
  </div>        
<% end %> 

参考までに after_sign_in_path_for はフラッシュメッセージを設定するためのものではありません。ログインに成功した後、アプリケーションをリダイレクトする場所を工夫するパスを通知するだけです。

成功したログインのリダイレクト パスを設定しましょう

config/routes.rb で

match "users/dashboard" => "controllername#action"

そして最後に after_sign_in_path_for メソッドを変更します

def after_sign_in_path_for(user)
  users_dashboard_path
end
于 2013-01-23T10:57:47.610 に答える
2

rb ファイルから JavaScript 関数 'alert()' を呼び出しています。でパスを定義する必要があります

  def after_sign_in_path_for(user)
    some_path
  end

javascript_tag を含むビューで alert() を使用します

于 2013-01-23T10:58:56.730 に答える
0

Bootstrap がインストールされている場合に警告メッセージを表示する最善の方法を次に示します。

app/views/layouts/application.html.erbこれを右上に追加します<%= yield %>

<% if notice %>
  <p class="alert alert-success"><%= notice %></p>
<% end %>
<% if alert %>
  <p class="alert alert-danger"><%= alert %></p>
<% end %>


RailsGirlsさん から頂きました

于 2014-10-25T17:39:59.493 に答える