如果应用程序已重定向或呈现,则该performed?方法true在控制器中返回.
如何确定应用程序是否呈现(而不是重定向)?
从performed?文档来看,我可以看一下@performed_render,但这看起来很糟糕.
我试图仅在它导致渲染(而不是重定向)的情况下缓存控制器动作的输出.这是我现在使用的代码:(基于渲染缓存)
def render_with_cache(options = {})
key = ([request.request_uri, request.format] | (options.delete(:key_additions) || [])).join("::")
body = Rails.cache.read(key)
if body
render :text => body
else
yield if block_given?
render unless performed?
if @performed_render
Rails.cache.write(key, response.body, options) # :expires_in
end
end
end
Run Code Online (Sandbox Code Playgroud)
pdo*_*obb 25
Rails 3.2+现在使用一种称为执行的方法?用于确定是否已执行渲染或重定向.
举例:
def index
redirect_to not_found_path unless authenticated?
render action: "show_all" unless performed?
end
Run Code Online (Sandbox Code Playgroud)
在后置过滤器中,检查响应状态代码。
MyController < ActionController
after_filter :check_response
# define your actions that render or redirect
protected
def check_response
# put real app logic here
puts :rendered! if response.status == "200 OK"
puts :redirected! if response.status == "302 Found"
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7003 次 |
| 最近记录: |