【问题标题】:Devise: how to store a particular location, not necessarily the last location?设计:如何存储特定位置,不一定是最后一个位置?
【发布时间】:2012-07-20 14:17:15
【问题描述】:

我想知道我是否对 Devise 要求过高。我想让访问者填写表格,然后在他们按下“提交”按钮时被要求注册。那是容易的部分。我的问题是,一旦用户被重定向到注册表单并填写了它,我就无法将他们重定向回原始表单,以便可以提交 that 表单(但现在用户 ID)。

我在应用程序控制器中使用了“after_sign_in_path_for(resource)”方法,但我的问题是注册后,request.referer 不是原始表单,而是注册表单。我考虑过使用 before_filter :store_location 回调,但后来我意识到它会存储最近的位置,即注册表单的 url。

如何将原始表单设置为注册后要呈现的正确位置?

附:这个问题来自一个相关的问题,位于here

【问题讨论】:

标签: ruby-on-rails devise


【解决方案1】:

在 ApplicationController 中试试这个 make 2 方法,它可以保存 会话的当前 url,另一个重定向到存储的 url(如果找不到它应该有一个默认值)。那么,在 我想为返回添加书签的页面(您可能不希望 某人被送回某些页面),然后保存网址。

应用程序.rb中的EG

   def store_location
      session['saved_location'] = request.request_uri
   end

   def redirect_to_back_or_default(default)
     if session['saved_location'].nil?
            redirect_to default
     else
       redirect_to session['return-to']
       session['saved_location'] = nil
     end
   end

然后,在您希望用户能够返回的页面中:

然后,只需调用 redirect_to_back_or_default('在此处输入您选择的默认网址,具体取决于上下文') 在 after_sign_in_path_for(resource_or_scope) 送人回来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多