param is missing or the value is empty: task
Экшен ожидает, что придет параметр 'task', но он не приходит. Почему? А потому, что вы его не отсылаете. То есть у вас неправильно оформлена форма. А точнее, у вас вообще формы нету.
{"authenticity_token"=>"Y8hE4tSk/qUL1xZDpCgvriUwYhmwfzeH3iwfxa7NB+C6DEKkvJLAQ4V3b6yTw4QUxOMPUTxoGKv36PYxpzmCoQ==", "id"=>"10"}
Вот доказательство, что 'task' не передается.
if @task.update(task_params)
Зачем этот апдейт нужен? Какова логика? Зачем обновлять весь таск?
@task.complete_task = true
Вообще, так в контроллерах делать не комильфо. С БД должна работать модель. Лучше сделать метод 'complete!' в модели и в контроллере просто вызывать
@task.complete!
Ну и роут не совсем верный.
post 'tasks/:id/complete', to: 'tasks#complete', as: 'complete_task'
– так бы было правильнее. Соответственно и экшен переименовать.
Или если делать ресурс:
resources :tasks do
post :complete, on: :member
end
Как исправить, думаю, теперь догадаетесь :)