我有一个表单,需要能够与5个(甚至更多)模型进行交互。其内容如下:
病人-需要建立病人的记录和细节(姓名,地址等)。
表单-跟踪表单名称和版本。
问题-跟踪每个表格上附加的问题。
答案-病人提出的问题的答案。
表单响应-跟踪填写表格的病人,以及表格的形式。
我已经创建了模型的布局,以及我认为数据是什么样子的:布局
在表单响应中,completed_by聚合关系考虑到用户、第三方或患者可以填写表单。
我被困在最好的方式去做这一切通过一种形式。现在,我正在浏览病人控制器和病人/新视图,因为我想象这一切都与病人相关。我只是不太确定如何在表单本身(form_for、form_tag、fields_or?)内嵌套所有这些嵌套。然后在控制器的创建操作中处理。即使经过了一堆铁路等,我还是很困。任何洞察力都将不胜感激。
发布于 2013-11-29 21:56:43
这是我从这个问题中所能理解的。将有五种型号
病人,表格,问题,回答,形式反应
现在表格会有很多问题。一个问题会有很多答案。一份表格会有很多答案。
模型结构应该是
class Patient < ActiveRecord::Base
has_many :formresponses
end
class Form < ActiveRecord::Base
has_many :questions
has_many :formresponses
end
class Question < ActiveRecord::Base
belongs_to :form
has_many :answers
end
class Answer < ActiveRecord::Base
belongs_to :question
end
class Formresponse < ActiveRecord::Base
belongs_to :form
belongs_to :patient
end现在您将有一个用于创建/编辑病人信息的表单,这应该很简单,因为没有嵌套。
表单的创建将是一个棘手的问题。存储类表单的属性将是非常简单的。要存储类问题的属性,需要在控制器中处理它们。创建表单元素,以便将名称绑定到“问题”。
例如,
<input type="text" name="questions[0][name]" value="some name" />
<input type="text" name="questions[0][help_text]" value="some help text" />注-名称和help_text是模型问题的属性。
现在,在控制器中,您可以遍历params的每个值:问题,以获得工业形式的值。
所以,会有这样的情况
params[:questions].each do |question|
q = Question.new(question)
@form.questions << q #This will append the question to your @form instance
end
...
@form.save类似地,您也可以这样做来存储响应。我希望你现在能明白一点
https://stackoverflow.com/questions/20293539
复制相似问题