为什么从 respond_to 调用操作时 before_action 不执行?

Why is a before_action not executed when the action is called from respond_to?

我有一个动作,它在控制器中的 :edit:new 动作之前设置一个可验证的实例。如果我在请求中直接调用这些操作,这将起作用。但是,如果我调用 :update:create 并且它们失败,之后在 respond_to 块中执行 format.html { render action: :edit },则 before_action 不会被触发。这是为什么?

因为render action: :edit实际上并没有调用控制器动作,只是渲染了edit模板。

您可以在 Rails 指南中找到更多信息:

http://guides.rubyonrails.org/layouts_and_rendering.html#the-difference-between-render-and-redirect-to