Ошибка 'stringify_keys' при попытке использовать поле формы - PullRequest
0 голосов
/ 13 февраля 2012

В форме form_for есть следующее:

  = form_for @activity do |f|
    .field
      = label :comment, :comment
      = text_area :comment, :comment, :rows => 4

Я не вызываю f.label или f.text_area, потому что комментарий - это отдельная модель, и я сохраняю его отдельно.Приведенный выше код работает нормально, но когда проверка завершается с ошибкой @activity, комментарий удаляется.Я хотел бы, чтобы поле комментария заполнялось заново при сбое проверки @activity, поэтому я попытался выполнить следующее:

  = form_for @activity do |f|
    .field
      = label :comment, :comment
      = text_area :comment, :comment, :value => @comment, :rows => 4

С этой строкой в ​​действии контроллера:

@comment = Comment.new(params[:comment][:comment])

С этимоднако я получаю следующую ошибку:

undefined method `stringify_keys' for "hello":String

Ошибка при назначении @comment в контроллере, который я показываю выше.

Что здесь происходит?

Параметры после ошибки содержат следующее:

 "comment"=>{"comment"=>"hello"}

1 Ответ

3 голосов
/ 13 февраля 2012

Проблема в том, что Comment#new ожидает хэш, ключи которого соответствуют атрибутам Comment, но вы даете ему params[:comment][:comment], значение которого является строкой (в данном случае "hello"). Я подозреваю, что это то, что вы хотите вместо этого:

@comment = Comment.new params[:comment]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...