RJS and after_filter

Hello all,

I need to call page.replace_html in every Ajax call.
Is there a way to do this in some after_filter ?

I tried a render :update do |page| in after_filter, but it says that
can only render once per action....

Thanks in advance....

Parra

I haven't tried it but I bet you can do:

def my_after_filter
  response.body << update_page do |page|
    page['element-id'].replace render :partial => "blah"
  end
end

Chad

Marcello Parra wrote:

I need to call page.replace_html in every Ajax call.
Is there a way to do this in some after_filter ?

Given render :update do |page|, page is just a variable. You can pass
it into a shared function, and that can then do both specific and
generic stuff to it, following typical OO design techniques.

Thanks Chad,

But that gives an undefined method `update_page' error....
I could not find the problem....

Parra

Marcello Parra wrote:

But that gives an undefined method `update_page' error....
I could not find the problem....

<%= render :update => |page| do
         end
%>

right?

Yes.....
But I need to call it in after_filter in a Controller....
I doing something wrong....

If you're calling it from inside a controller, update_page should
work. Are you sure you're defining it in a controller as an instance
method?

Chad

No, that's not right. Inside a view, you use update_page, not render
:update. Internally render :update simply delegates to update_page.

Chad

Chad and all...

This is what I'm doing:

class TestController < ApplicationController
  after_filter :setbla

  def setbla
    response.body << update_page do |page|
      page['element_id'].replace render :partial => "blah"
    end
  end

  def index
  end
end

I get the error:
undefined method `update_page' for #<TestController:0x347e408>

Where is the mistake ???
Or is there another way to do that ??

Thanks

Have you found a solution? i'm also struggling with that issue