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 を返す時とか?