0

您好,我对 Ruby 非常陌生,目前正在使用两个模型和两个相应的数据库。Quiz哪一个has_many questions。我试图让问题出现在测验“编辑视图”中,这就是我所拥有的。

当前不起作用的是“问题”的表单条目(请参阅下面的评论部分)。我认为我不太理解冒号前面的表达式。(例如:title、:quiz_date 等>)它们是常规变量吗?

无论如何,有问题的代码块成功地制作了一个表格,但使用:questions它将数据库问题行中的所有信息放入表单字段(即id、问题、答案、可能的答案等)。但它不仅仅给了我问题字段的值。

但是,如果我将其更改为 :question (希望只获取问题表中问题字段的值),我会收到错误消息。我也尝试过:questions.question 和简单的 questions.question。这些都不起作用。

有什么建议么?

<%= form_for(@quiz) do |f| %>
<% if @quiz.errors.any? %>
<div id="error_explanation">
  <h2><%= pluralize(@quiz.errors.count, "error") %> prohibited this quiz from being saved:  </h2>

   <ul>
   <% @quiz.errors.full_messages.each do |msg| %>
     <li><%= msg %></li>
   <% end %>
   </ul>
  </div>
<% end %>

<div class="field">
  <%= f.label :title %><br />
  <%= f.text_field :title %>
</div>
<div class="field">
  <%= f.label :quiz_date %><br />
  <%= f.date_select :quiz_date %>
</div>
<div class="field">
  <%= f.label :reading %><br />
  <%= f.text_field :reading %>
</div>
<div>

  #the problem code
  <% @quiz.questions.each do |questions| %>
  <div class="question">
  <%= f.label :questions %><br />
  <%= f.text_field  %>
  </div>
  <% end %>
  #end problem code

</div>
<div class="actions">
 <%= f.submit %>
</div>
<% end %>
4

1 回答 1

3

您需要在 Quiz 模型中添加 Accept_nested_attributes

Class Quiz < ActiveRecord::Base
 accepts_nested_attributes_for :questions

然后在您的表单中添加

   <%= f.fields_for :questions do |build| %>
    <div class="question">
     <%= build.label :questions %><br />
      <%= build.text_field :questions  %> #whatever attribute in your questions model
     <%end%>

你会发现这个 Railscast 很有帮助,http: //railscasts.com/episodes/196-nested-model-form-part-1

于 2012-08-18T15:41:45.387 回答