KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
The performed? method returns true in a controller if the application has redirected or rendered. How can I determine whether the application rendered (rather than redirected)? Judging from the performed? docs , I can look at @performed_render , but this seems hacky. Edit: Why do I want to do this? I'm trying to cache the output of a controller action only in the case that it results in a render (and not a redirect). Here's the code I'm using now: (based on render-caching ) 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
Tags (comma-separated)
Save Edits
Cancel