“ assigns”にアクセスするにはどうすればよいですか“ render:template =>の後…&#8221 ;?

StackOverflow https://stackoverflow.com/questions/209753

  •  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}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top