Создание и обновление Todos

Конечно, нам также бы хотелось добавить пару todos и отмечать их как “выполненные” при необходимости. В Rails это можно сделать добавив методы create и update к нашему контроллеру TodosController.

В методе create мы хотим от Todo модели сохранить новый todo в нашу базу данных. Наше действие должно выглядить приблизительно так:

def create
  @todo = Todo.new(todo_params)

  if @todo.save
    redirect_to action: :index
  end
end

Мы создаём новый Todo и назначаем его к переменной @todo. Затем попытаемся сохранить этот новый todo и если он возвращает true, то он будет направлять нас в наше index действие.

Давайте взглянем на todo_params в Todo объекте. Мы его ещё не добавили, но сделаем это через минуту. Метод, который мы собираемся добавить к нашему контроллеру - это не действие, которым вы можете воспольоваться через браузер, это метод, который будет смотреть за параметрами, отправляемыми браузером, он также будет содрежать наши todo-данные. В этом методе мы отметим “разрешённые” параметры.
Вставьте этот метод в конец TodosController перед последним end:

def todo_params
  params.require(:todo).permit(:description)
end

Перед тем как мі перейдём к добавлению интерфейса к нашему списку todo, давайте добавим метод update к контроллеру TodosController. Он очень похож на действие create, но вначале взглянем на Todo в базе данных и обновим аттрибут вместо создания нового:

def update
  @todo = Todo.find(params[:id])

  if @todo
    @todo.update_attributes(todo_params)
  end

  render nothing: true, status: 200
end

Также вместо редиректа мы рендерим пусто и возвращаем 200 как status о том, что всё прошло отлично. Добавим некоторый JavaScript, чтобы выполнялись изменения в фоне.

�� Добавьте методы create и update method в TodosController