Rails で respond_to が NoMethodError になる場合の対処法

2023.08.05 に更新記事は 2 分で読めます
サムネイル画像

respond_to はリクエストで指定されたフォーマットによって処理を分ける事が出来る Ruby on Rails のメソッドです。
今回はその respond_to を使おうとした場合に NoMethodError (undefined method 'respond_to') と表示されてしまう場合の対処法について解説します。

結論

Rails の API モードでは respond_to の使用に必要な MimeResponds が定義されていない ことによるエラーです。

使用するには ApplicationControllerMimeResponds モジュールを include する必要があります。

次でその方法について解説していきます。

解説

結論で説明したように API モードで定義されていない respond_to を使おうとすると以下のようなエラーが発生します。

NoMethodError (undefined method `respond_to' for #<Api::MyController:0x005645c81f0798>
Did you mean?  respond_to?):

そのため、各 Controller で使用できるようapp/controllers/application_controller.rbMimeResponds モジュールを include します。
具体的には以下のように追記すれば OK です。

class ApplicationController < ActionController::API
  include ActionController::MimeResponds
end

これで無事 respond_to が使用できるようになります。

この記事がみなさんのお役に立てれば嬉しいです!

以下のサイトを参考にさせていただきました。

プロフィールアイコン

Syuu

フロントエンドが好きなWEBエンジニア Next.js / React / TypeScript

SHARE