0

こんにちは。私はRubyを初めて使用し、現在2つのモデルと2つの対応するデータベースを使用しています。AQuizこれ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

クイズモデルにaccepts_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 に答える