【发布时间】:2021-08-06 04:35:34
【问题描述】:
具体来说,我目前正在开发一个需要这种行为的 Ruby on Rails 应用程序,但在意识到许多关于 SO 的现有问题都涉及特定语言后,我故意以与语言和框架无关的方式来表述我的标题或框架。我希望提供一些关于如何在任何语言/框架中解决/实施此问题的一般性建议/指南。
背景:
正在开发的应用是一个带有登录页面的 Ruby on Rails 应用。登录后,某条路线通向一个页面,在该页面底部显示(某种反馈)表单。这个表单部分可以使用 URL 片段来聚焦(我希望有一个锚点)。
如果用户已经登录,则跟随带有已附加片段的路由的 URL 会导致以表单部分为焦点的页面。
但是,我需要一个解决方案,其中单个精心制作的 URL 会导致该部分,而不管用户最初是否登录。如果用户尚未登录,则应显示登录页面,成功登录后,应关注表单部分。
除此之外,该 URL 将包含在电子邮件中。
但是,片段在重定向时会丢失,因为它似乎不是由浏览器发送到服务器的,并且重定向是在服务器端使用:
def after_sign_in_path_for(resource)
params[:redirect_path].presence || stored_location_for(resource)
end
对于这种可以用任何语言或框架实现的场景,是否有一个好的、简单、干净的解决方案?
虽然我目前确实有一种解决方案,但我对它并不完全满意,因为它看起来有点像 hack。我将在下面将其作为答案发布,希望其他人能提出更好的解决方案。
【问题讨论】:
标签: url redirect url-fragment