我的表单有问题。我正在开发一个允许申请人提交申请的应用程序,我想确保用户(接收这些应用程序的人)可以在他们的应用程序中添加/删除问题。我该如何实现呢?
我的想法是拥有Application
模型和ApplicationQuestion
模型belongs_to
应用程序。但是我已经迷失了。
更新: 另一个问题让我感到困惑。在我的系统中,我可以让Admins动态添加/删除ApplicationQuestions,我没有遇到任何问题。但是,我希望用户能够查看当前的ApplicationQuestions集并回答它们,而无法添加/删除/编辑问题。我现在正在使用代理模型ApplicationQuestionAnswer,它属于Application和ApplciationQuestion。但是我仍然对这些观点有困难。
答案 0 :(得分:0)
是的,您可以按照自己的想法保留模型。将会有User
模型基本上有两个角色。一个是teacher
(只是举个例子)问问题,一个是student
谁会回答这些问题。现在,teacher
可以创建application
questions
个Application
,以便另外两个模型ApplicationQuestion
和Application belongs_to User
ApplicationQuestion belongs to Application
。关系可以是:
student
现在,answer
将回答可以存储在ApplicationQuestionAnswer
表中的问题,这些问题可能属于User
和ApplicationQuestion
的另一个模型question_type
}。现在问题可以是不同的类型(数字,字符串,日期等),所以要注意这一点,它们都可以通过在代码端处理它们而存储在一个列中,并且这也有ApplicationQuestion
属性在teacher
模型中。
现在application
可以修改question
并删除问题,如果他们想要或添加新问题。请务必添加依赖销毁,以便在删除问题时删除答案。另外假设choices
可以ApplicationQuestionChoice
,那么请确保再添加一个属于ApplicationQuestion
的{{1}}模型id
,其answer
将保存为student
ApplicationQuestionAnswer
的{{1}}。
<强>更新强>
question
模型将保存每个ApplicationAnswer
的答案,而您可以做的是有两个模型。一个是ApplicationQuestionAnswer
,另一个是ApplicationAnswer belongs_to User
ApplicationAnswer belongs_to Application
ApplicationQuestionAnswer belongs_to ApplicationAnswer
。协会将是:
form
现在,在视图中,ApplicationAnswer
将用于创建/更新nested forms
,并为其关联的ApplicationQuestionAnswer
提供teacher
,您将向学生展示。这将保存所有答案。
同样的嵌套表单也可以与css
一起使用来添加或删除问题。您也可以将任何gem用于嵌套表单:
希望这有帮助。
答案 1 :(得分:0)
我实际上更关注这些观点。我该怎么渲染 表格形式填料?
从包含稳定数量Application
的{{1}}表单开始(请参阅Rails nested forms以实现它)。基本实现可能如下:
Questions
动态添加和删除问题可以通过添加(和删除)上面显示的<%= form_for @application do |f| %>
<%= f.fields_for :application_questions do |aq_form| %>
<%= aq_form.text_field :question %>
<%= aq_form.text_field :question %>
帮助生成的HTML
块来实现:
Rails
你可以自己深入研究它的实现(并编写一些<%= aq_form.text_field :question %>
来编排javascript
块添加/删除)或者使用一些具有该功能的gem。其中一种流行的解决方案是cocoon。它为您提供了漂亮的链接(HTML
和link_to_add_association
),点击它们可以执行所需的动态操作。您可能有兴趣尝试cocoon demo application来了解如何将其嵌入到您的项目中。