1

我有一个复杂的模型,想创建不同的屏幕来编辑它。举个愚蠢的例子,假设它是一个用户模型,一个屏幕让您编辑姓名,另一个屏幕编辑电话号码,另一个页面编辑用户的偏好。

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

用会话破解一些东西一点也不难,但我总是想知道“有没有更好的方法?”。

4

2 回答 2

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)
于 2012-11-28T15:32:32.760 回答
0

您可以使用 http 引荐来源网址和 URI 解析功能来执行此操作。就像是

redirect_to(URI.parse(request.env['HTTP_REFERER'][5]))

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

于 2012-11-27T17:12:48.517 回答