Разобрался! :)
если у вас есть непустой объект, rails предполагает, что вы хотите обновить этот объект. то есть используйте «PUT» вместо «POST»
чтобы выполнить 'PUT', рельсы поместят скрытый ввод в форму с "_method" = "put". Итак, это выглядит как POST, но рельсы воспринимают это как PUT.
если вы действительно хотите просто обновить объект (то, что вы делаете, похоже), PUT лучше, и вам просто нужно переключить маршруты на PUT.
если (как и я) вы делаете что-то, что действительно требует POST (то есть, его нельзя отправить более одного раза безопасно), вы можете написать свою форму: например:
<%= form_for @plan_doc,
:url => portal_plan_document_update_path,
:html=>{:method => "POST"}, :remote => true do |f| %>
для подтверждения, посмотрите на сгенерированный исходный код HTML и убедитесь, что скрытое поле "_method" не установлено в "put"