【问题标题】:rails best practice for a multistep form?多步表单的rails最佳实践?
【发布时间】:2011-09-30 01:58:17
【问题描述】:

我想在 Rails 3 中创建一个多步表单。我看过其中的 railscasts 剧集,但我不觉得他在创建表单时使用了最佳实践。我觉得这是完成任务的一种草率方式。使用 Rails 中的最佳实践创建多步表单的最佳方法是什么?

【问题讨论】:

  • 你能解释为什么你认为 Ryan 在做他的多步表格时“马虎”吗?
  • 我只是觉得控制器在创建操作中有太多代码。没有其他方法可以创建多步表单吗?
  • 在 amazon 和 legalzoom 等大型网站上看到过,整个结帐主要是作为 URL 中的 GET 请求完成的。这是个坏主意吗?
  • 如果您的意思是表单作为 GET 检索并作为 POST/UPDATE 提交,这对于基于 HTTP 的表单是通用的。
  • Thomas - 我们如何回答您的问题?

标签: ruby-on-rails forms rubygems


【解决方案1】:

如果没有更多信息,您的问题有点难以回答,真正的答案应该是详细的教程(如 Railscast)而不是 SO 答案,但这里有一些想法可以帮助您上路。

多步骤表单有两种主要方法:

  1. 使用Javascript逐位显示表单

  2. 创建单独的视图并使用create/update 或类似方法将用户从一个路由到另一个。

每种方法都有其优点,具体取决于您是否要支持 javascript,以及您对在部分之间保存数据的要求。

1的优点

  • 用户可以更快地从一个部分导航到另一个部分(javascript 隐藏/显示是即时的)
  • 数据很容易获得,用户想参考前面的部分
  • 更简单的控制器操作

1的缺点

  • 不适用于未运行 javascript 的用户(除了将表单显示为大块之外,这里实际上没有任何渐进增强功能)。
  • 将要求您提供基于 javascript 的导航以从一个部分移动到另一个部分(如果您是 .js 新手,这只是一个缺点)
  • 如果您想在步骤之间保存用户信息,则需要 AJAX。
  • 如果没有 AJAX 和 javascript,如果用户不小心按了后退按钮等,用户将面临丢失大量条目的风险。

【讨论】:

  • 我看到的是一些具有类似于我想要做的多步骤表单的站点,它们的排列方式类似于第 1 步的 order/1 和第 2 步的 order/2 等等......最好的实现这一点的方法是为每个步骤制作不同的控制器方法,对吗?
  • @Thomas - 正如我所解释的那样,这只是 一种 方式(即方法 2)。请记住,许多主要网站可能使用方法 1 的复杂版本。
猜你喜欢
  • 2021-03-13
  • 2012-01-01
  • 2011-04-12
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
相关资源
最近更新 更多