respond_to はリクエストで指定されたフォーマットによって処理を分ける事が出来る Ruby on Rails のメソッドです。
今回はその respond_to を使おうとした場合に NoMethodError (undefined method 'respond_to')
と表示されてしまう場合の対処法について解説します。
Rails の API モードでは respond_to の使用に必要な MimeResponds
が定義されていない ことによるエラーです。
使用するには ApplicationController
に MimeResponds
モジュールを include する必要があります。
次でその方法について解説していきます。
結論で説明したように API モードで定義されていない respond_to を使おうとすると以下のようなエラーが発生します。
NoMethodError (undefined method `respond_to' for #<Api::MyController:0x005645c81f0798>
Did you mean? respond_to?):
そのため、各 Controller で使用できるようapp/controllers/application_controller.rb
へ MimeResponds
モジュールを include します。
具体的には以下のように追記すれば OK です。
class ApplicationController < ActionController::API
include ActionController::MimeResponds
end
これで無事 respond_to が使用できるようになります。
この記事がみなさんのお役に立てれば嬉しいです!
以下のサイトを参考にさせていただきました。