继续:Rails form building Survey-Questions / Response-Answers
红宝石1.9.2-P180
rails 3.0.6
datamapper 1.1.0
背景 - 我试图从用户的角度创建一个表单构建器(而不是像ruby / rails中的较低级别的'formbuilder')。用户使用浏览器工具创建表单,指定响应区域(例如填写空白区域或多个选项)。该表格可以具有任意数量的问题和问题类型,然后其他用户可以填写表格并使其关联,即调查 - 响应环境。我希望能够在浏览器表单构建器中提取一个gem,以便在任何项目中使用。所以,首先处理最简单的版本,我有一个非常简单的构建器来填写空白的问题类型。只有我试图根据用户填写的调查建立响应表单才停止。
这个控制器:
def completesurvey
@survey = Survey.get(params[:id])
@response = @survey.responses.new
@questions = @survey.questions.all
end
此表格:
= simple_form_for @response do |f|
= f.input :whodid
= f.simple_fields_for :questions_attributes do |g|
= g.label :questionfield
%br
= g.simple_fields_for :answers_attributes do |a|
= a.input :answerfield
只提供1个Questionfield / Answerfield,而不是调查中的问题列表和答案空间。
编辑:
我正在通过以下方式取得一些进展(但它不会在帖子上创建,对我来说是另一个问题并且分开)。它感觉不对,除了'questionfield'之外还没有输出问号,但它似乎与我想做的事情相对应。我最初做了类似的事情,但是没有意识到fields_for,我看到的读数和样本表明fields_for不需要迭代一个组,即神奇地做了。
= simple_form_for @response do |f|
- @questions.each do |qq|
= f.simple_fields_for :questions_attributes, :index=>qq.id do |q|
= q.label :questionfield
%br
= q.simple_fields_for :answers_attributes do |a|
= a.input :answerfield
= f.button :submit
第二次编辑:
实现嵌套的3个级别对于一个开始来说太多了....我正在尝试简化并稍微改变模型(响应只接受_sted为答案,答案属于响应和问题)所以我有这个,输出但没有正确发布 - 另一个和我的下一个问题,但仍然代表了我正在做的某种前进的进展。
= simple_form_for @response do |f|
- @questions.each do |q|
= q.questionfield
%br
= f.simple_fields_for :answers_attributes, :index=>q.id do |a|
= a.input :answerfield
= f.button :submit
任何输入仍然受到赞赏,我开始明白我需要做什么,但我错过了一些东西。就像我说的:学习项目。
(使用rails3,datamapper,dm-accepted-nested-attributes)