【发布时间】:2014-08-20 16:23:16
【问题描述】:
在带有 before_action 的控制器动作中,使用 render something and return 实际上不会导致控制器停止执行其余的动作。在我的测试中,只有在控制器操作中被调用时,and return 才能按我的预期工作。
# DoubleRenderError
class SomeController < ApplicationController
before_filter :double_render, only: [:index]
def index
render file: "public/500.html", status: :internal_server_error
end
def double_render
render file: "public/404.html", status: :not_found and return
end
end
# Renders 404 only, no error
class SomeController < ApplicationController
def index
render file: "public/404.html", status: :not_found and return
render file: "public/500.html", status: :internal_server_error
end
end
这里发生了什么? before_actions 可以停止控制器的其余执行吗?
【问题讨论】:
-
自 rails 2.0 以来,过滤器中的渲染/重定向已停止该操作 - 不应调用您的 index 方法
-
您是否看到与我的示例代码相同的行为?
-
我之前肯定有过滤器重定向作为结束动作的一种方式
标签: ruby-on-rails ruby-on-rails-4 before-filter