【发布时间】:2012-01-13 01:35:24
【问题描述】:
第一次在 Stack Overflow 上发帖,希望我做得对。
我现在正在使用 Ruby on Rails 编写应用程序。不透露太多,前提是我们有组织,有普通用户。组织有活动,需要用户在参与之前回答问卷。
我很确定我将使用的这些模型/关系(我认为这对我的问题并不那么重要/相关,只是想提供背景):
- 组织(一对多)事件
- 事件(一对一)问卷)
- 问卷调查(一对多)用户
- (特定)响应(一对一)用户
我有一个问题是如何实施调查问卷。我想赋予组织本质上编写/构建自己的表单的能力。如果可能的话,我想远离他们使用代码(即任何 DSL 等等)。
我想最简单的方法是给他们一定数量的文本区域响应,这样我就可以始终如一地存储数据,而不必为如何配置存储这些数据而烦恼(例如,也许每个事件只能有 5 个响应由用户的文本字段响应填写)。
我的理想是让组织能够自行动态生成表格 - 也许一份问卷将有 1 个文本输入,然后是 3 个多项选择,最后可能有 2 个简短答案;另一个可能有5个选择题和1个简答题;另一个问卷可能只有 1 个文本输入……你明白了。
所以我看到了这个问题的两个部分 - 第一个是组织创建调查问卷的用户界面。我想这不会很困难 - 询问他们希望将每种响应类型(MC,简短回答)的数量放入表单中,让他们能够重新排列它们,等等。
问题的第二部分(我更关心的)是如何存储/访问这些数据。我猜在红宝石中没有动态属性类型的交易 - 存储一些具有未指定数量的部分的字段等等。我想我可以让它们成为所有单独的模型(即 question_response 模型,带有 :question、:response_type、:response 等),但我很确定这可能效率低下。
我最初的猜测可能是序列化数据/使用json;我曾短暂地使用过 Drupal 6,这似乎是他们的做法。我想知道是否还有其他人有任何经验/建议?我对 Ruby 很陌生,所以我想知道那里是否有宝石或者可以帮助我尝试做的事情。
谢谢!
【问题讨论】:
-
对于初学者来说,请观看railscasts.com/episodes/196-nested-model-form-part-1 - 这几乎正是您想要的。
标签: ruby-on-rails json forms serialization dynamic