我一直在努力学习构建嵌套的rails表单,并且似乎不再使用单独的模型来存储问题和答案。
为了弄清楚,我尝试构建一个非常简单的应用,其中我有三个模型:my_form
,question
,answer
。对于这个应用,我没有使用用户身份验证或类似的东西,这意味着每个表单has_many :questions
和每个问题has_one :answer
。这当然意味着使用单独的问答模型是不合适的,但我试图理解这种形式嵌套的最基本版本,以便我可以将它应用于更复杂的情况。
所以我输入了所有问题并保存到数据库中。其各自的表格包含以下列:
+------------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| question_number | int(11) | YES | | NULL | |
| question_content | text | YES | | NULL | |
| my_form_id | int(11) | YES | MUL | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------------+----------+------+-----+---------+----------------+
我的答案表是这样设置的:
mysql> show columns in answers;
+----------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| answer_content | text | YES | | NULL | |
| question_id | int(11) | YES | MUL | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+----------------+----------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
我可以使用show.html.erb
视图轻松显示每个问题:
<h1><%= @legal_form.title %></h1>
<p><%= @legal_form.description %></p>
<ul>
<% @legal_form.questions.each do |question| %>
<li><%= question.question_content %></li>
<% end %>
</ul>
我的问题如何创建answers.html.erb
视图以将简单文本字段与写入我的答案表的每个问题相匹配?
我意识到这一点非常简单,并且有几个宝石可以做这种事情,还有一些将用户纳入其中的教程。我只是在寻找一个基本的例子来理解基本面。