2

Ruby ガイド (http://guides.rubyonrails.org/getting_started.html#adding-a-route-for-comments) のブログとコメントの例に従って、ネストされたルートで form_for を実行しようとしています。

多くの種類の質問を含む調査を作成するアプリケーションを実行しています。質問はグループにあり、各質問には 1 つ以上の回答オプションがあります。

これはreoutes.rbです

  resources :groups do
    resources :questions do
      resource :answers
    end
  end

コントローラーはうまく機能しており、作成されたグループを表示すると、質問が表示され、ネストされた form_for で質問が作成される可能性があります。

グループ/show.html.erb

<h2>Group: <%= @group.desc %> </h2>
<h3>Questions</h3>
<% @group.questions.each do |q| %>
   <%= q.desc%> <%= link_to 'Destroy question', [@group, q], :confirm => 'Are you sure?', :method => :delete %> <br/>
<%end%>

<h4>New question</h4>
<%= form_for([@group, @group.questions.build]) do |f| %>
  <div class="field">
    <%= f.label 'Label: '%>
    <%= f.text_field :desc, :size => 100%>
    <%= f.submit 'Create question'  %>
  </div>
<% end %>
<br />

次に、答えと、その質問に答えを挿入する方法を示す必要があります。回答を表示するには、 @group.questions.each ブロック内の q.answers.each を使用するとうまくいきます。しかし、私がしなければならないことは、回答のために form_for を作成することです。次のコードを試しましたが、動作しません:

グループ/show.html.erb

...
<% @group.questions.each do |q| %>
   <%= q.desc%> <%= link_to 'Destroy question', [@group, q], :confirm => 'Are you sure?', :method => :delete %> <br/>
  <!-- New answer -->
  <%= form_for([q, q.answers.build]) do |f| %>
  <div class="field">
    <%= f.label 'Label: '%>
    <%= f.text_field :desc, :size => 100%>
    <%= f.submit 'Create answer'  %>
  </div>
<% end %> 

<%end%>
<h4> New question<h4>
...

Railsはエラーを出します:

未定義のメソッド `question_answers_path'

form_for([q, q.answers.build]) を使用しようとすると。

何か助けはありますか?

4

1 に答える 1

1

事項のフォームでオブジェクトを指定する順序で、リソースがグループの下にネストされ、次に質問があり、最後に回答があります。のようなものを使用する必要がありますform_for [g,q,q.answers.build]。それでもうまくいかない場合は、投稿を編集して の内容を含めてくださいrake routes。そこから先に進むことができます。

于 2011-06-02T21:36:24.837 に答える