2011-10-27 8 views
2

Alright에 삽입되지 않았습니다. 먼저, Rails를 처음 사용하는데 이것은 처음부터 빌드하려고하는 첫 번째 프로젝트입니다.POST 요청의 매개 변수가 테이블

코스와 질문의 두 가지 모델이 있습니다. 특정 과정에 질문을 추가 할 수 있기를 원합니다. 그래서 과정은 질문의 부모 모델입니다. (코스 has_many : 질문과 질문 belongs_to : 물론) :

<%= 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 %> 

와이 (가) 만드는 것입니다 과정에서

/쇼 나는이 부분 렌더링 함수 :

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

하지만 내 콘솔에서 다음 출력을 얻습니다.

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을 찾고 있습니다,하지만 당신은 params 해시 같은 객체에 더 이상 참조,도 paramscontent 매개 변수를하지 않습니다 - 그래서 저장되지 않을 수 있습니다. 시도 :

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

관련 문제