Вы написали в комментарии: "В некотором учебнике сказано, что рельсы будут знать, когда использовать сообщение или патч, нажав ту же кнопку отправки. Они сказали, что если рельсы не могут найти запись в модели, он будет использовать" пост "для создания; но когда он найдет старую запись в модели, он будет использовать «patch или put» для автоматического обновления.
И это правильно.
Но Rails нужно кое-что знать, какую запись обновлять (например, id записи). У вас есть <%= form_for :message do |a| %>
в форме. Здесь нет информации о том, какую запись обновить. Должно быть
<%= form_for @message do |a| %>
Примечание @
- это переменная экземпляра из действия редактирования контроллера @message = Message.find(params[:id])
, и это конкретное сообщение с идентификатором.
Если вы используете его, вы можете написать только одну форму для действий создания и обновления, она будет работать автоматически - просто получите @message из действия new / edit.
Подробнее об этом можно прочитать в руководствах