使用 Rails v2.1,假设您有一个可从多个位置访问的控制器操作。例如,在 Rails 应用程序中,您有一个链接可以从两个不同的视图编辑用户,一个在用户索引视图上,另一个来自另一个视图(假设来自每个页面的导航栏)。
我想知道根据他们单击的链接将用户重定向回正确位置的最佳方法是什么。例如:
示例 1:
- 列出所有用户
- 在列表中的用户上单击“编辑”
- 用户点击表单上的“保存”,控制器重定向回 1。
示例 2:
- 用户可以在应用程序的任何页面上,导航栏显示编辑当前用户的链接
- 用户点击链接进行编辑
- 用户单击表单上的“保存”,当用户单击导航栏中的“编辑”链接时,控制器将重定向回他们所在的任何页面。
我在过去看到它是通过以下方式完成的:
- 将参数放置在原始编辑链接上,并带有链接出现的原始控制器/动作。为了使这更干燥,您可以在帮助程序中使用@controller.controller_name 和@controller.action_name。
- 控制器将参数保存到会话变量中。
- 一旦控制器保存了记录,它就会重定向到会话变量。
我不特别喜欢这个解决方案的是需要将参数添加到视图中的每个适用链接。我想知道是否有办法将这一切都构建到控制器中。
我想的一种更好的方法是:
- 在“编辑”操作上放置一个 before_filter 以将引用者(这是否足够可靠?)保存到会话中。
- 当点击“更新”时,控制器将重定向到会话变量,然后删除会话变量。
对最好的方法有什么想法吗?