2011-10-27 4 views
2

Alrightに挿入されていません。まず、私はRailsを初めて使っています。これは最初からビルドしようとしている最初のプロジェクトです。POSTリクエストのパラメータがテーブル

私には2つのモデルがあります:コースと質問。私は特定のコースに質問を追加できるようにしたいので、コースは質問の親モデルです。

<%= render 'questions/form', :question => @course.questions.build %> 

と部分質問/ _form:

<%= form_for(question) do |f| %> 
    <div class="field"> 
    <%= f.text_field :content %> 
    <%= f.hidden_field :course_id %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

、ここでは、作成している私は、部分的にレンダリングコース/ショーから

(もちろんコースにhas_many:質問と質問belongs_toの)関数:

def create 
    @course = Course.find(params[:question][:course_id]) 
    question = @course.questions.build  
    if question.save 
     redirect_to @course 
    end 
end 

私のコンソールには、次の出力があります。私は私が作ったことをかなり確信している私は何を理解していないパラメータ=>「ハロー」「コンテンツ」を含むということですが、私のテーブルに挿入された値がnilである...

Started POST "/questions" for 127.0.0.1 at 2011-10-27 19:06:25 -0400 
    Processing by QuestionsController#create as HTML 
    Parameters: {"utf8"=>"✓",   "authenticity_token"=>"negkm0uXBez8sisXl3pFVgfvhcDkixFPiMjzM68mNVU=", "question"=>{"content"=>"hallo", "course_id"=>"2"}, "commit"=>"Create Question"} 
    Course Load (0.3ms) SELECT "courses".* FROM "courses" WHERE "courses"."id" = $1 LIMIT 1 [["id", "2"]] 
    (0.3ms) BEGIN 
    SQL (0.5ms) INSERT INTO "questions" ("content", "course_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["content", nil], ["course_id", 2], ["created_at", Thu, 27 Oct 2011 23:06:25 UTC +00:00], ["updated_at", Thu, 27 Oct 2011 23:06:25 UTC +00:00]] 
    (1.6ms) COMMIT 

これは時間や試行錯誤の産物なので混乱して混乱します。もし誰かが私が作ってくれる小さな変化があったり、同じ目標を達成するために全く異なる方法があれば、それは大いに感謝します。

答えて

1

が存在する場合は、course_idcourseを探していますが、あなたはparamsparamsハッシュのようなオブジェクト、またcontentパラメータへのさらなる言及をしない - それは保存することはできません。試してください:

question = @course.questions.build(params[:content]) 
+0

ありがとうございます。あなたの提案は正しい軌道に乗った。 'question = @ course.questions.build(params [:question])' –

+0

[attr_accessible](http://api.rubyonrails.org/classes)を覚えておいてください。 /ActiveModel/MassAssignmentSecurity/ClassMethods.html#method-i-attr_accessible)は、ここからの通常の次のステップである_mass assignments_を制限します。 :) – sarnold

関連する問題