Rendering in after_filter

Hi!

Is it possible to render the action within the after_filter method, or
is the rendering performed before?

I have something like this:

class FooController
after_filter :send
def a
@content=…
end

def b
@content=…
end
protected
def send
send_data(@content,…)
end
end

However, when calling the action a or b, the @content doesn’t get sent,
but instead rails shows an error message abour missing template.

Hi,

On May 11, 2006, at 1:15 PM, Esad H. wrote:

@content=...

However, when calling the action a or b, the @content doesn’t get
sent,
but instead rails shows an error message abour missing template.

Here’s a bit of guessing…

The response body already has the content by the time the filter is
run, well, it does by the time the around filters are run so I assume
the after filters too. So I’d guess that rails is looking for its
response content before the filters are run – this makes sense since
the after filters are supposed to have access to whatever is being
returned. Try adding a ‘return false’ at the end of the a and b
methods – if that doesn’t stop the template error then something
else is wrong. The send_data may still not work from the filter, if
it doesn’t, try writing “response.body = @content” (and you’ll have
to get the headers setup properly as well). (note that if you are
using around filters the controller is the argument and you write
something like: “controller.response.body = controller.content” so
make sure that the @content attribute is visible).

Cheers,
Bob


Posted via http://www.ruby-forum.com/.


Rails mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails


Bob H. – blogs at <http://www.recursive.ca/
hutch/>
Recursive Design Inc. – http://www.recursive.ca/
Raconteur – http://www.raconteur.info/
xampl for Ruby – http://rubyforge.org/projects/xampl/