Ruby on Rails 使用标签

Posted

技术标签:

【中文标题】Ruby on Rails 使用标签【英文标题】:Ruby on Rails using tabs 【发布时间】:2012-09-15 18:12:35 【问题描述】:

大家!

起初,我制作了一个包含大量元素的表单:文本字段、文本区域等。准备好表格后,我才明白,这么大的表格要连续填写,不太方便。我不想使用“step”系统(步骤 1 -> 步骤 2 -> ... -> 步骤 n),因为我希望最终用户能够拥有此表格以任何顺序填写(+ 用户将能够预先看到他需要填写哪些表格),因此我将表格分为几个 选项卡

这个想法如下:一旦用户在某个选项卡中填写了表单,他点击“保存”按钮并继续下一个(以他选择的任意顺序)。

我想知道的事情 - 存储中间数据的最佳方法是什么?我是否应该为每个带有选项卡 ID 的选项卡表单设置一些隐藏输入以传递给模型,以便在每个“步骤”中仅验证选项卡相关数据并将其存储在数据库中。或者,也许,我应该有一个包含当前对象的 session[:object],最后我会将它存储在 DB 中并从会话中删除。

这个想法能实现吗?

提前致谢! :)

【问题讨论】:

【参考方案1】:

有一个叫做wicked的gem,它可以让你以非常简单的方式创建向导,看看

【讨论】:

【参考方案2】:

我不是 ruby​​ 忍者,但在其他语言(如 php)中,我们通常使用会话来执行此操作。为什么不在 Rails 上执行此操作?

除了使用会话之外,您还可以考虑为“临时存储行”创建一个表,因此每次更改页面时都可以将数据保存到该表中,最后将它们全部保存到主表中.

如果您经常失去会话,这很有用...您可以将临时存储行与用户相关联,如果他失去会话,您可以从数据库中恢复他未完成的表单。

【讨论】:

【参考方案3】:

您可以简单地使用Railscasts 217 - Multistep form 方法,效果很好。

但是,这可能不适合您,因为您只能在收集完所有内容后存储数据,而不是逐步进行。

另一个解决方案 - 正如你提到的 - 将使用例如jQuery 选项卡用于创建表单步骤并通过 AJAX / backbone.js 进行一些验证,然后将实际记录与其所有数据一起存储。

【讨论】:

看起来有点复杂,我根本不需要 AJAX。我需要后端详细信息:)

以上是关于Ruby on Rails 使用标签的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on rails attachment_field 翻译标签

使用 js/jquery 在 ruby​​ on rails 中隐藏 form_tag 上的提交按钮

Ruby on Rails - JS 输入令牌,验证失败时的问题

我在 Ruby on Rails SQLite3::ConstraintException: FOREIGN KEY constraint failed 中有这个问题

用于 ruby​​ on rails 的 Mahout 插件

Ruby On Rails 部分渲染