約束の地

キャロ組

Rails のコントローラで render text: を指定したらエラーが出る場合

render text:でエラーになる

自らの恥を晒し続けている当ブログですが……。

Railsのコントローラにて、コントローラから直接テキストを表示したい場合があるかと思います*1。その際に、以下の書き方だとTemplate is missing(Missing template)のエラーになります。

class FooController < ApplicationController
  def index
    render text: "Hello, Rails!"
  end
end

render text:ではなく、render plain:と書けば OK です。

class FooController < ApplicationController
  def index
    render plain: "Hello, Rails!"
  end
end

参考(例によって答えそのもの、感謝)

RubyおよびRailsのバージョン

Rails version: 5.1.1
Ruby version: 2.4.1 (x86_64-linux)

見苦しい言い訳

いや、Rails 4 の本である こちらの本 に書いてあったことをそのままやっただけなんですよ……。

同書の改訂版(Rails 5 対応版)である こちらの本 では、当該箇所はちゃんとplain:に変更されています。

つまりバージョンアップこわい。

*1:デバッグ時とか JSON を返す時とか?

Powered by はてなブログ