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

默认情况下,设计会添加 Flash 消息。无需设置flash message。只需要在视图中显示flash message。试试下面的代码。

在你的 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 回答