具体来说,我目前正在开发一个需要这种行为的 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
对于这种可以用任何语言或框架实现的场景,是否有一个好的、简单、干净的解决方案?
虽然我目前确实有一种解决方案,但我对它并不完全满意,因为它看起来有点像黑客。我将在下面将其作为答案发布,希望其他人可以提出更好的解决方案。