设计:如何存储特定位置,不一定是最后一个位置?

时间:2012-07-20 14:17:16

标签: ruby-on-rails devise

我想知道我是否要求过多的Devise。我想允许访问者填写表单,然后在按下“提交”按钮时需要注册。这很容易。我的问题是,一旦用户被重定向到注册表单并填写完毕,我就无法将它们重定向回原始表单,以便那个表单可以提交(但现在与用户ID)。

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

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

P.S。这个问题来自一个相关的问题,位于here

1 个答案:

答案 0 :(得分:1)

在ApplicationController中尝试使用make 2方法进行保存 会话的当前URL,以及重定向到存储的另一个URL url(如果找不到,则应该有默认值)。然后,在 我想要书签返回的页面(你可能不想要 有人被送回某些页面),然后保存网址。

在application.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)中发回某人。