Почему после переименования модели мои функции создания и обновления не работают?

Я переименовал одну из своих моделей и связанное с ней имя таблицы, контроллер, папку представления и ссылки на старое имя во всех файлах приложения. Приложение работает нормально, за исключением того, что теперь я не могу создавать или обновлять действия (новое имя) из-за ошибки, связанной с параметрами. Вот ошибка, полученная при создании нового действия:

undefined method `permit' for "create":String Did you mean? print

Вот параметры, показанные с этой ошибкой:

Parameters:

{"utf8"=>"✓", "authenticity_token"=>"[removed]", "commit"=>"Create This Campaign"}

Я вручную заменил токен на [удален] здесь.

Я получаю ту же ошибку при попытке обновить действие:

undefined method `permit' for "update":String Did you mean? print

А вот параметры, показанные при этой ошибке обновления:

Parameters:

{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"[removed]", "commit"=>"Submit", "id"=>"50"}

До того, как я все переименовал, этих ошибок не появлялось. Любая идея, почему это происходит? Похоже, что мое приложение передает строку (вместо хэша) в params.require(:action).permit, но я не уверен, почему оно это делает.


person Dylan Husted    schedule 21.11.2016    source источник


Ответы (1)


Вы не должны использовать action в качестве имени ресурса в Rails. Параметр action в params всегда имеет значение имя вызываемого действия, то есть вы не можете использовать params[:action] для отправки данных обратно на сервер.

В действии контроллера update params[:action] всегда будет строкой "update", поэтому вы получаете ошибку, связанную с тем, что permit не определено в строке "update".

person meagar    schedule 21.11.2016