带有文件上传的 Rails 3 多步骤表单

Posted

技术标签:

【中文标题】带有文件上传的 Rails 3 多步骤表单【英文标题】:Rails 3 multi-step form with file upload 【发布时间】:2011-09-18 17:46:45 【问题描述】:

我在试图弄清楚如何实现带有文件上传的 Rails 3 多页表单时遇到了一些麻烦,其中每个步骤都由控制器中的更新/编辑操作处理。

Ryan Bates 提供了他精彩的 screencast 来介绍如何使用会话来执行多步骤表单,以及如何通过在初始步骤中保存到数据库然后对每个步骤执行更新来完成类似操作的简要说明连续的步骤。我还阅读了他的gist,对如何创建多步骤表单的一些不同选项进行了更详细的解释(我倾向于选项 1)。

但是当涉及到多步表单的实际实现时,我还是有点迷茫。我的目标是使用carrierwave 进行文件上传(图像),并且可能使用geekq 的工作流来帮助状态机在每个步骤中进行验证。

为了清楚起见,我目前正尝试在向导的初始步骤中在数据库中创建一个条目,并让每个后续页面更新模型。

有什么想法吗?

非常感谢您提供正确方向的示例或要点。

谢谢!

注意:我读过另一篇文章,其中提到了一些关于键/值数据存储的内容,但不幸的是,这让我有点过头了......

【问题讨论】:

【参考方案1】:

Key-Value 存储或 SQL 与您的实际问题的联系非常松散。这些只是关于如何将数据实际存储在后端的不同方法。使用一种或另一种方式对您的情况并没有真正的影响。

至于实际问题,我认为它对 SO 来说太笼统了。多步表单往往与另一种非常不同。没有“一种好方法”可以做到这一点。

您没有得到任何答案的原因可能是因为没有提出真正的问题。您应该做的是尝试进行实际实施并在某处碰壁时发布更具体的问题。

最后 - 我相信多步骤表单在可用性方面并不是最好的主意。当然,在某些情况下使用它们是有正当理由的,但如果有办法在你的情况下避免使用它们,你真的应该三思而后行。

我之前在表单和上传方面遇到的一个问题是验证(它与多/单步骤无关)。通常,当验证失败时,用户必须重新上传文件。幸运的是,在您的情况下,这不是什么大问题,因为 Carrierwave 会自动处理。

【讨论】:

感谢您的回答和反馈!

以上是关于带有文件上传的 Rails 3 多步骤表单的主要内容,如果未能解决你的问题,请参考以下文章

php单文件上传和多文件上传

将文件夹参数添加到 Rails 简单表单上传

如何自定义rails文件上传表单

day20 文件上传

jQuery 表单插件 + Ajax 文件上传 + Rails

表单中的单文件上传和多文件上传