多分、RubyかRailsの予約語をつかってしまったのだと思う。
現象
books_controller.rb にて showとstatusという以下のようなアクションがあったとする。
def show 何かの処理 if hogehogeFlg flash[:notice] = "エラー" redirect_to(:action => 'index', :id => params[:id]) return else render return end end def status 何かの処理 if fugafugaFlg flash[:notice] = "エラー2" redirect_to(:action => 'index', :id => params[:id]) return else render return end end
hogehogeFlgやfugafugaFlg がfalseのときは問題なく動作していたのだけど、両方がtrueになるとき DoubleRenderError が出てしまう。不思議なのは、showを呼び出したときにもstatusを原因としてDoubleRenderErrorが出てしまうこと。
条件分岐させると DoubleRenderError が出やすいというのは昔経験済みなのでredirect_toの後にはreturnを置いてみたけどまったく解決しない。railsのバージョンの問題かと思って 3.0.5 から 3.0.7に変えたけどだめ。
そして、statusのアクション名を whoに変えてみると問題なく動くことがわかった。だれかの役にたつかもしれないのでメモしておく。3時間ぐらい時間を無駄にしてしまった。