[param is missing or the value is empty: task] Как решить?
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
Как исправить, думаю, теперь догадаетесь :)
Во-первых, сделайте# config/routes.rb
resources :tasks do
 match :complete_todo, on: :member, as: :finished_task, via: :post
end
А дальше, пока непонятно, что за ошибка и где. Порядок дебага:
1. Убедиться, что существует нужный роут и формируется правильная ссылка с правильным методомо (пост, гет) и форматом (html, js и т.д.)
2. Убедиться, что запрос попадает в нужный экшн
3. Убедиться, что таск выбран
 Про попытке отметить задачу выполненной вылетает ошибка: param is missing or the value is empty: task
Непонятно, ошибка на клиенте или на сервере. Непонятно, что за ошибка (у эксепшенов есть классы). Непонятно, в каком месте возникает (у эксепшенов есть трейс)
Ну, а вообще, скорее всего, вы забыли про стронг парамс и просто так написали:@task.update(task_params)
и не обновили сам метод:private
def task_params
params.require(:task)
...
end
Или вообще не написали его