我有一个嵌套资源的应用程序。我的路由是:
resources :teams do
resources :blogs
end在我的博客控制器中,我使用了不同的布局,通过添加
layout "teamlayout"传给控制器。application.html.erb和teamlayout.html.erb这两种布局都包含了一个登录表单本身。我是通过下面的代码实现的:https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app
现在我的问题来了。当用户登录时,我希望他重定向到他登录的页面。
发布于 2011-12-29 01:48:06
您有几个选项:
在登录表单中包含一个描述登录源的隐藏字段值(例如hidden_field_tag(:login_source, "team")),并定义您自己的SessionsController#create逻辑,该逻辑使用隐藏字段值来确定response_with的位置。
或者,您可以通过在带有登录表单的控制器中使用before_filter来跟踪用户的位置,方法如下
def store_location
session['saved_location'] = request.request_uri
end然后,您可以覆盖应用程序控制器中的after_sign_in_path_for(资源)方法,以使用会话saved_location值来确定重定向的位置。
对我来说,第二种选择似乎对设计基础设施的侵入性较小,但灵活性较差。
https://stackoverflow.com/questions/8656592
复制相似问题