- 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)はいつ使うのが適切?
- 「サーバー側で処理は成功したが、クライアントに返すレスポンスボディはない」 ケースで使います。具体例はDELETEリクエスト成功時、非同期処理の受付完了、ファイル削除完了など。レスポンスボディを返さないので帯域も節約できます。
Q.head :no_contentとrenderの違いは?
A.renderはレスポンスボディ(JSON/HTML/XML)を伴うレンダリングで、headはステータスコードとヘッダーだけを返します。204を返したい場面ではrender json: {}, status: 204でも可能ですが、ボディが空なのでhead :no_contentの方が意図が明確です。
Q.head: :no_content(コロン付き)で実行するとどうなる?
- Rubyの構文として
head:がキーワード引数になるため、コントローラーでheadメソッドが期待する引数の渡し方とズレてエラーになります。head :no_content(headとコロンの間にスペース)が正しい書き方です。
Q. status 204以外のno_content相当のコードは?
- 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で確認できます。