可以在Rails控制器中呈现和引发exception吗?
我现在已经和它斗争了好几个小时了。 我有一个控制器动作,我想渲染一个页面,然后自动引发一个exception。 我找不到太多关于此的信息让我觉得我在寻找错误的东西。
类似下面的东西可能吗?
class UsersController e render 'email_error' raise(e) end # .. other stuff end end
在这种情况下,我只想告知最终用户错误,然后在应用程序本身上引发exception。 请注意,我无法更改事实上的错误页面,因为这是一个较小的应用程序,在相同的代码库中具有更大的应用程序。
不,您要么渲染也要提出exception,而不是两者。
Rails确实提供了public
的静态500.html
页面,这是默认情况下为exception呈现的内容,您可以自定义用户在那里查看所有exception的消息。
还有rescue_from
方法,您可以使用它来自定义特定exception类的响应,这是一个有一个中心点(通常在ApplicationController
)的好方法,其中exception响应都位于其中。
如果您使用您的用例执行此操作,您可能需要自己的自定义exception类( RuntimeError
的子类),您可以将此exception包装到重新引发中,例如:
rescue StandardError => e raise EmailConfirmationError.new e.message end
…然后在您的ApplicationController
:
rescue_from EmailConfirmationError { |e| render "email_error" }