Во-первых, сделайте
# 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
Или вообще не написали его