可以在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" }