4

我有一个多步骤表单,用户在几个不同的页面上填写信息。在传统的 Rails 中,您将每个资源单独保存在其自己的控制器中,并使用 REST 操作来操作数据。

在传统系统中,我将有 3-5 个不同的控制器(一些步骤是可选的)用于单个多步骤形式。如果我按照传统方式进行操作,那么控制器中就没有真正意义上的“秩序”。进入该项目的新开发人员必须了解哪些步骤映射到哪些步骤等等。

另一方面,我曾想过打破常规,使用一个控制器来组织整个多步骤表单。该控制器将充满以下方法:

def personal_info
  # code...
end

def person_info_update
  # code...
end

def residence_info
  # code...
end

def residence_info_update
  # code...
end

# many more coupled methods like the above...

这个单一的控制器会变得相当长,但它本质上是一堆耦合的方法:一个用于显示步骤(表单),另一个用于更新和重定向到下一步。

这将打破 Rails 约定,我必须设置自己的路由。

但我很好奇其他人是如何解决这个问题的?我知道两者都可以工作,但我想知道从长远来看哪个更容易维护和编码。

4

2 回答 2

0

我用https://github.com/pluginaweek/state_machine做了这样的事情

这个想法是在表单的每一步都有一个状态,并根据实际资源的状态简单地呈现不同的表单部分。上面的 gem 让你为每个状态指定验证和回调。

像这样,您可以使用标准的 REST 控制器操作。

于 2012-09-02T13:17:41.473 回答
0

资源不等于页面。我怀疑这两种方式都会打破对 REST 的限制。

您的所有兴趣都集中在浏览器中的 View 域上。如果你想在多个部分中显示一个表单,你应该使用 HTML、CSS 等。

否则,您只是在服务器上为表单进度创建临时存储。

于 2012-09-02T11:52:06.170 回答