“ assigns”にアクセスするにはどうすればよいですか“ render:template =>の後…&#8221 ;?
-
03-07-2019 - |
質問
ApplicationControllerにエラー処理メソッドがあります:
rescue_from ActiveRecord::RecordNotFound, :with => :not_found
def not_found(exception)
@exception = exception
render :template => '/errors/not_found', :status => 404
end
RAILS_ROOT / app / views / errors / not_found.html.erb
には、これがあります:
<h1>Error 404: Not Found</h1>
<%= debug @exception %>
ただし、 @exception
は常に nil
です。 debug assigns
を試しましたが、それは常に {}
です。 render:template
を呼び出したときに、割り当てはコピーされませんか?もしそうなら、どうすれば入手できますか?
私はエッジRailsを使用しています。
解決
それは奇妙なことで、理由はわかりません。別の方法として、明示的なローカルとして例外を渡そうとしましたか?
def not_found(exception)
render :template => '/errors/not_found',
:status => 404,
:locals => {:exception => exception}
end
およびビュー:
<h1>Error 404: Not Found</h1>
<%= debug exception %> <!-- Note no '@' -->
他のヒント
ActionController :: Base のAPIドキュメントから試してみてください:
render :template => '/errors/not_found', :status => 404, :locals => {:exception => exception}
所属していません StackOverflow