Forum: Ruby on Rails Is there a way to abstract the updating of other parts of th

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
631d1677786f0725da6ccee46043686e?d=identicon&s=25 Jonathan Viney (Guest)
on 2006-05-25 03:36
(Received via mailing list)
Hey all,

I'd like to abstract the process of updating different portions of the
page after an Ajax request has taken place. Rather than simply putting
the extra view logic in the standard rjs template, it seems to give
better separation if there is a split between the core view logic (ie,
inserting a row in a table), and updating any associated portions of
the page.

Is this possible? I can't see a way of doing it at the moment because
render can only be called once. I could just fiddle with the RJS stuff
in ActionView but would like to check there isn't a better way.

Maybe an after_filter, but I'm doubtful about that.

Thanks, -Jonathan.
43ec5998360a0cc21b51afef1781e9c0?d=identicon&s=25 Daniel Higginbotham (danieldaniel)
on 2006-05-25 04:07
(Received via mailing list)
I'm not sure if you can do this with an RJS template, but you should be
able
to create a response to an ajax request which contains more ajax
requests
which are then executed.  I'm sorry this doesn't give you anything
concrete,
but I hope it helps

Daniel
9d1f5d2d9de70bd9a934f557dc95a406?d=identicon&s=25 Daniel ----- (liquid)
on 2006-05-25 04:16
(Received via mailing list)
is there anything wrong with
page.replace_html id, :partial => 'somePartial'

?
631d1677786f0725da6ccee46043686e?d=identicon&s=25 Jonathan Viney (Guest)
on 2006-05-25 05:56
(Received via mailing list)
Yep, that's what I'm doing at the moment.

The reason I want the separation is that the application relies
heavily on Ajax so there are often quite a number of page areas that
need to be changed. It would be nice to be able to separate the
updating code from the rest of the rjs code.

-Jonathan
9d1f5d2d9de70bd9a934f557dc95a406?d=identicon&s=25 Daniel ----- (liquid)
on 2006-05-25 11:44
(Received via mailing list)
I'm not sure that I understand the distinction your trying to make.

Could what your trying to achive  be done by calling render on a partial
rjs
which replaces particular areas (or has a particular branch of logic)
with
another rjs partial?

ie

render :partial => 'branch_one'

_branch_one.rjs
if some logic
  page.replace_html "thing1", :partial =>'branch_two'
  page.replace_html "thing2", :partial =>'branch_three'
else
  page.replace_html "thing1", :partial =>"branch4"
  page.replace_html "thing2", :partial => "branch5"
end

then you could similarly have logic dedicated to other branches in the
partials
_branch_two.rjs
_branch_three.rjs
_branch4.rjs
_branch5.rjs

I'm not sure that this is what you had in mind tho..
A2c85dc5ee81b12e3cc0a6522e8d079d?d=identicon&s=25 Chris Hall (Guest)
on 2006-05-25 13:09
(Received via mailing list)
you also have the option of rendering the rjs directly within the action

def some_action
  if request.xhr?
    render :update do |page|
      case @param[:do]
        when 'foo'
          page.replace_html ...
        when 'bar'
          page.replace_html ...
    end
  end
end
This topic is locked and can not be replied to.