多个视图编辑相同的Rails资源

时间:2012-11-27 17:05:19

标签: ruby-on-rails-3

我有一个复杂的模型,想要创建不同的屏幕进行编辑。作为一个愚蠢的例子,假设它是一个用户模型,一个屏幕允许您编辑名称,另一个屏幕编辑电话号码,另一个页面编辑用户的偏好。

为每个视图,路线等创建新动作,表单很容易,但诀窍是当你实际点击提交时,它会调用update,然后......然后是什么?如果有错误,则应返回用于编辑模型的页面,而不是通用的“编辑”视图。即使成功,也可以回到调用更新的页面。

在会话中搞砸事情并不困难,但我总是怀疑“有更好的方法吗?”。

2 个答案:

答案 0 :(得分:1)

我找不到比这更好的方法,并且急需这样做:

def edit
  flash[:edit_user_return_to] = :edit
...

def other_edit
  flash[:edit_user_return_to] = :other_edit
...

接着是

render(:action => flash[:edit_user_return_to] || :edit)

答案 1 :(得分:0)

您可以使用http referrer和URI解析功能来执行此操作。像

这样的东西
redirect_to(URI.parse(request.env['HTTP_REFERER'][5]))

此行从请求中获取HTTP REFERER,并使用URI模块对其进行解析。引用路径应该是数组中的第6个元素。