首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails设备和重定向

Rails设备和重定向
EN

Stack Overflow用户
提问于 2016-03-25 19:10:08
回答 1查看 232关注 0票数 0

Im使用sign_in\up设备

并让before_action :authenticate_user!

我的问题是,当用户未登录而我单击登录时,它会调用sign_in表单,并在填写后将我重定向到同一页面

例如,我没有登录,但我在根页面上,我想看到products/1我点击show模式弹出,我输入我的凭据,它会将我重定向到同一页面

但是在签到之后我想去products/1

会话控制器

代码语言:javascript
复制
class SessionsController < Devise::SessionsController
  respond_to :js
  layout false
  def create
    self.resource = warden.authenticate(auth_options)

    if resource && resource.active_for_authentication?
      sign_in(resource_name, resource)
    end
  end

end

模板create.js.erb

代码语言:javascript
复制
<% if user_signed_in?%>
<%= request.referrer%>
  window.location.href='<%= request.referrer %>'
<% else %>
  $('#login_popup input').parent().addClass('inputbox_error');
  $('#log_error_messages').show();
  $('input').keydown(function(){
    $(this).parent().removeClass('inputbox_error')
    $('#log_error_messages').hide();
  })
<% end %>

<% if user_signed_in?%>之后我应该做什么改变?

EN

回答 1

Stack Overflow用户

发布于 2016-03-25 19:25:00

如果您想在登录后重定向用户,可以在Devise::SessionsController中使用after_sign_in_path_for方法

首先在显示登录模式时将您所在的url存储在session中,如下所示:

代码语言:javascript
复制
session[:login_redirect] = url

然后在登录后将用户重定向到该url。

代码语言:javascript
复制
class SessionsController < Devise::SessionsController
  def after_sign_in_path_for(resource)
     session[:login_redirect]
  end
end

还要使用会话路由更新您的routes.rb:

代码语言:javascript
复制
devise_for :user, :controllers => {:sessions => "sessions"}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36218795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档