Параметры запроса POST не вставляются в таблицу - PullRequest
2 голосов
/ 28 октября 2011

Хорошо.Прежде всего, я новичок в Rails, и это первый проект, который я пытаюсь построить с нуля.

У меня есть 2 модели: курс и вопрос.Я хочу иметь возможность добавлять Вопросы к определенному Курсу, поэтому Курс является родительской моделью Вопроса.(Курс has_many: вопросы и вопрос принадлежит_ к: курсу)

Из курсов / шоу я отрисовываю частичные:

<%= 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 Ответ

1 голос
/ 28 октября 2011

Вы ищете course с course_id, если таковой существует, но вы больше не ссылаетесь ни на params хеш-подобный объект, ни на параметр content в params - так это никогда не может быть сохранено. Попробуйте:

question = @course.questions.build(params[:content])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...