##この記事について
APIの勉強をしているとエラーが出たので、その解決方法を投稿
##環境
・Ruby 2.6.6, Rails 6.0.3.2
・Docker,Docker-compose(開発環境)
##該当コード
api/books_controller.rb
class Api::BooksController < ApplicationController
def show
@book = Book.find(params[:id])
render 'show', formats: 'json', handlers: 'jbuilder'
end
end
##原因
https://railsguides.jp/layouts_and_rendering.html#formats%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3
railsガイドではformats: 'json'
ではなく、render formats: :xml
のようにシンボルで記述するようになっている。rails6からはシンボルになったのかな?
##コードを修正
api/books_controller.rb
class Api::BooksController < ApplicationController
def show
@book = Book.find(params[:id])
- render 'show', formats: 'json', handlers: 'jbuilder'
+ render "show", formats: :json, handlers: "jbuilder"
end
end
シンボルに変更すると、エラーが解消されました。
##まとめ
記事を参考にするときはしっかり環境が同じかどうか、確認をした上で勉強をしていく。
全く同じように進めているのにエラーが出るのであれば、バージョン起因を考えるようにする。