【问题标题】:rails device not keeping GET paramsrails 设备不保留 GET 参数
【发布时间】:2016-04-18 11:36:42
【问题描述】:

我有一个正在运行的带有设备 gem 的 rails 应用程序。我想在电子邮件中传递一些带有参数(在 url 中)的 url。当用户单击它并且用户已登录时,一切正常(ULR 就像 myhost.com/myaction?my_var=xx) 但如果用户未登录,它会重定向到登录路径。提供凭据后,它丢失了 my_var 值和应用程序中断。 (是的,这是我的行动)

现在我正在将用户重定向到他的仪表板并显示错误消息,但有人有好的解决方案吗?

【问题讨论】:

  • 您可以验证您的参数并将其保存到用户会话中,登录后您可以将它们用于您需要的东西。

标签: ruby-on-rails


【解决方案1】:

通过在 ApplicationController 中定义 after_sign_in_path_for 方法,您可以在成功验证后覆盖默认的设计行为:

  def after_sign_in_path_for(resource)
    session[:stored_path] || stored_location_for(resource) || root_path
  end

在此示例中,Devise 将检查是否设置了 session[:stored_pa​​th],如果没有设置,它将尝试加载 stored_location_for(resource) 路径,并作为失败保存,最终将重定向到 root_path。

在这种情况下,当 current_user 未登录时,您需要在重定向时设置 session[:stored_pa​​th]。

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 2011-04-15
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 2015-10-14
    • 2021-03-25
    • 2013-04-20
    相关资源
    最近更新 更多