スリ飯屋MaLankaのフリーエンジニアな日々

このブログでは、フリーランスエンジニアとしての実体験から、フリーランスエンジニアに関するノウハウ、ブログや沖縄移住、スリランカの最新情報について発信します。

【Rails】コントローラーから、status204(no_content)を返す方法

※提携先広告(リンク、バナー等)やAI生成文を含む場合があります
  • Railsコントローラーからstatus 204 (no_content)を返すには`head :no_content`1行でOK
  • よくあるハマりどころは`head: :no_content`のようにheadの後ろにコロンを付ける書き方で、これだとエラーになる
  • API側で「処理は成功したがレスポンスボディを返さない」 ケース(DELETEや非同期完了通知など)で使う定番のステータスコード

RailsのAPIコントローラーから204 (no_content)を返したいときの正しい書き方と、つい間違えるポイントのメモです。

【Rails】コントローラーから、status204(no_content)を返す方法

Railsコントローラーからstatus 204を返すにはhead :no_contentの1行でOK。head: :no_contentのようにheadの後ろにコロンを付けるとエラーになります(2026年5月時点)。




APIからステータスコード204を返すときにハマったのでメモ。

Railsでstatus 204 (no_content)を返す方法は?

head :no_content

でOK。

head: :no_content

ではないです!

headにコロンを付けるとなぜダメ?

headにシンボルいりません。

つけてしまってて、ハマりました。。

参考にした記事は?

Railsコントローラからステータスコード204を返す方法 | teratail




RailsやRubyを学びたい人へ

RailsやRubyを本格的に学ぶなら「RailsHack」(早期割29,800円)かUdemyの主要Rails入門3コース受講がおすすめ。Udemyは90%OFFセール頻発・30日返金保証付き(2026年5月時点)。


RailsやRubyを学びたい人は、

RailsHack(レイルズハック)という、

最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、

Udemy で下記のコースを受講すると良いです★


✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座

✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】 <- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。

✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう




また、

Udemy は定期的にセールをやっていますし(90%OFFとかもザラ)、

「30日間なら返金できる」ので、

満足できなかった時でも安心です。



【公式】RailsHack(レイルズハック)

【公式】Udemyで学んでみる




よくある質問(FAQ)

Q. status 204 (no_content)はいつ使うのが適切?

  1. 「サーバー側で処理は成功したが、クライアントに返すレスポンスボディはない」 ケースで使います。具体例はDELETEリクエスト成功時、非同期処理の受付完了、ファイル削除完了など。レスポンスボディを返さないので帯域も節約できます。

Q.head :no_contentrenderの違いは?

A.renderはレスポンスボディ(JSON/HTML/XML)を伴うレンダリングで、headはステータスコードとヘッダーだけを返します。204を返したい場面ではrender json: {}, status: 204でも可能ですが、ボディが空なのでhead :no_contentの方が意図が明確です。

Q.head: :no_content(コロン付き)で実行するとどうなる?

  1. Rubyの構文としてhead:がキーワード引数になるため、コントローラーでheadメソッドが期待する引数の渡し方とズレてエラーになります。head :no_content(headとコロンの間にスペース)が正しい書き方です。

Q. status 204以外のno_content相当のコードは?

  1. 205 (Reset Content)・304 (Not Modified)もボディを返さないステータスです。205はフォームのリセット指示、304はキャッシュ有効時のリソース変更なし通知に使われます。

Q. Railsのheadで使えるシンボルは他にどんなものがある?

A.:ok(200)・:created(201)・:no_content(204)・:bad_request(400)・:unauthorized(401)・:not_found(404)・:unprocessable_entity(422)・:internal_server_error(500)などが使えます。HTTPステータスコードに対応するシンボル名はRailsガイドのRack::Utils::SYMBOL_TO_STATUS_CODEで確認できます。