views:

29

answers:

1

Specifically, I have a number of pages in my Rails app that use the same partial. In the action handler for each page I create an array object (e.g. @list_elements) based on a database query. Each page uses a different query so that each page has different list elements in it. At the top of each page I have a form_remote_tag containing an edit field, allowing the user to add a new element in a dynamic, AJAXy fashion (think something like Twitter 'What's happening' box).

My problem is that when the AJAX command fires I need to reload the list to include the newly added item, but the contents of the list were determined by a database query. I need to remember which query applies to the current page (i.e. controller action) so that I can run it again. I thought about storing something in the rails session structure but it seems like overkill - it's like storing the current page all the time.

Anybody done anything like this and have a nice Railsy way to achieve it?

Ben

+1  A: 

Couldn't you just re-render the partial in your rjs template?

page[:div_element].replace_html :partial => 'partial'

If you perform the query and define the array in the controller action, then an ajax call will refresh that array.

Audie
Maybe I could - not used RJS at all yet though so no idea! I'll look into that.
Ben
If you're using AJAX in Rails, you need to be using rjs. Rjs makes AJAX soooo easy. It's wonderful.
Audie