shimgo
12/17/2016 - 10:30 AM

render root_path でundefined method `empty?' エラー

render root_path でundefined method `empty?' エラー

###背景 render root_path をしようとしたのは、root_pathでフォーム入力をしていてエラー発生時に 値を保持するのにrenderが適していると思ったから。

###原因 スタックトレースを見ると action_view/lookup_context.rb の normalize_name メソッドで エラーが発生していることがわかる。 このメソッドではURLを'/'で分割して配列にしており、(ソース読んでないけど)抜き出したURLから 表示するテンプレートを決定していると思われる。 そしてrender root_pathとするとroot_pathはURLパスだと'/'となるため分割時には[]が返され、 その配列の要素を取り出してempty?を呼び出すとエラーが発生する。

###解決策 使用するテンプレートを指定すると回避できる

render action: :index