POST请求的参数未插入表中

时间:2011-10-27 23:33:52

标签: ruby-on-rails

好的。首先,我是Rails的新手,这是我尝试从头开始构建的第一个项目。

我有2个模型:课程和问题。我希望能够将问题添加到特定课程,因此课程是问题的父模型。 (课程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

我不明白的是参数包含“content”=&gt;“hallo”,但插入我的表中的值是nil ...

我相当肯定我弄得一团糟,因为这是一小时或试错的产物,如果有人做了一点改变我应该做,或者甚至完全不同的方式来达到同样的目标,那就是非常感谢。

1 个答案:

答案 0 :(得分:1)

您正在查找course course_id,如果存在params,但您不再对content哈希类对象,params进行进一步引用question = @course.questions.build(params[:content]) 中的参数 - 因此永远无法保存。尝试:

{{1}}