我在我的应用程序中使用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'
答案 0 :(得分:4)
默认设置添加Flash消息。无需设置flash消息。只需在视图中显示flash消息即可。请尝试以下代码。
<% flash.each do |type, message| %>
<div class="flash">
<%= message %>
</div>
<% end %>
FYI after_sign_in_path_for不用于设置flash消息。只需通知路径即可在成功登录后设置应用程序的重定向位置。
让我们设置成功的登录重定向路径
你在config / routes.rb 中的
match "users/dashboard" => "controllername#action"
最后更改after_sign_in_path_for方法
def after_sign_in_path_for(user)
users_dashboard_path
end
答案 1 :(得分:2)
您正在从rb文件调用javascript函数'alert()'。您应该在
中定义路径 def after_sign_in_path_for(user)
some_path
end
并使用javascript_tag
在视图中使用alert()答案 2 :(得分: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