routeの設定
api/todo/にPOSTしたときに、createアクションが実行されるようにroutes.rbを設定します。
config/routes.rb
namespace :api do
namespace :todo do
get '/', action: 'index'
post '/', action: 'create'
end
end
コントローラーの記述
jsonのデータを取り込んで、DBへ保存するようcreateアクションを記述します。
app/controllers/api/todo_controller.rb
def create
@todo = Todo.new(todo_params)
respond_to do |format|
if @todo.save
format.json { render json: 'ok!', status: :created }
else
format.json { render json: 'ng!', status: :unprocessable_entity }
end
end
end
private
def todo_params
params.require(:todo).permit(:title, :done)
end
POST確認
$ curl -X POST -H "Content-Type: application/json" -d '{"todo": {"title": "TESTTITLE", "done": false }}' http://localhost:3000/api/todo
doneはデフォルトでfalseです。
{
"todo":[
{"title":"test投稿todo","done":false},
{"title":"test投稿2","done":true},
{"title":"TESTTITLE","done":false}
]
}