1

ネストされたフォームで子を作成していますが、その上にいるのでルートが機能することがわかります。

resources :surveys do
  resources :questions
end

質問を追加するために最初の調査を選択しました。ページに調査の名前を表示したいのですが、次のようになります。

class QuestionsController < ApplicationController

  def new
    @Survey = Survey.find(params[:id])
    @question = Question.new
  end
end

http:// localhost:3000 / Surveys / 1 / question / new

<div><%= @survey.name %></div> # show this

<div>
 <%= simple_form_for(@question do |f| %>
  <%= f.button :submit, "Done" %>
 <% end %>
</div>

これは私にエラーを与えます:

ActiveRecord::RecordNotFound in SurveysController#new

Couldn't find Survey without an ID

app/controllers/questions_controller.rb:7:in `new'

{"survey_id"=>"1"}

なんで?ここで何が起こっているのですか?

4

1 に答える 1

1

エラーが正確に何を示しているか。idで「親」モデルを検索する場合は、を使用する必要がある*parent*_idため、この場合は次のようになります。

@Survey = Survey.find(params[:survey_id])

idパラメータは現在のコントローラ用に予約されています。この場合、このコントローラは調査ではなく質問のIDを参照します。

于 2012-06-28T14:33:22.143 に答える