I''m trying to do something rather simple (I think) but being new to rails, I''m not sure how I should proceed... What I want to do in simple terms is: When the my page load, get some data from a table (let''s call that table items).. so I want to get all my items, and display them in a div... I want to do it via Ajax because I want the user to be able to filter this data (live)..so the list of items would update depending on what filter (a drop down menu) is selected... Now in PHP I would have no problems doing it with prototype... (a simple ajax request with a "filter" parameter sent to a controller that will return my list of items...)...then I update my div with this response... Now in RoR...I tried to do it with a partial, and RJS templates but I can''t get it to work... What would be the easiest way to : 1) When the page load, get the list of item... 2) When the filter drop-down menu is changed, update that list of items based on what filter is selected... Any help/tips would be appreciated.. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
For the onload part, just populate a variable in the controller and load
the items:
def index
@foos = Foo.find(:all)
end
You can then use an observe_field or observe_form in your page to watch
the drop down and fire off an ajax call and update the div from your
controller using rjs. The docs on observe_field / form are here:
http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html#M000535
That should get you pointed in the right direction.
Jean-nicolas Jolivet wrote:> I''m trying to do something rather simple (I think) but being new
to
> rails, I''m not sure how I should proceed...
>
> What I want to do in simple terms is: When the my page load, get some
> data from a table (let''s call that table items).. so I want to get
all
> my items, and display them in a div... I want to do it via Ajax because
> I want the user to be able to filter this data (live)..so the list of
> items would update depending on what filter (a drop down menu) is
> selected...
>
> Now in PHP I would have no problems doing it with prototype... (a simple
> ajax request with a "filter" parameter sent to a controller that
will
> return my list of items...)...then I update my div with this response...
>
>
> Now in RoR...I tried to do it with a partial, and RJS templates but I
> can''t get it to work...
>
> What would be the easiest way to :
>
> 1) When the page load, get the list of item...
> 2) When the filter drop-down menu is changed, update that list of items
> based on what filter is selected...
>
> Any help/tips would be appreciated..
>
--
Sincerely,
William Pratt
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Thank you for your response! I wasn''t aware of the observe_field
helper,
this will definitely help me :)
The part where I''m kinda hesitant though is that I''m not sure
where I
should generate my html (ex: should i do it in the controller? seems
like a weird place to do it..)
From what I understand, I can make an Ajax request when my select drop
down has changed, using the observe_field...
now let''s say I do it like this:
observe_field(''my-dropdown'', :update =>
''my-items'', :url => {:controller
=> ''items'', :action => ''update_list''})
So this would call the update_list option of my items controller, and
update my div (''my-items'') with the respone, whenever
my-dropdown
changes...perfect..sounds just like what I need...
The question is... What do I put in the update_list action of my item
controller? To return a formatted html response that I can update my div
with? And when do RJS templates comes into play?
I''m a bit lost...
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
I would put the html in a partial. Remove the :update from your
observer_field method and to the update using rjs and a partial from the
controller. Here is a mock-up to give you an idea:
def update_list
#gather needed info
@items = Items.find(:conditions.....
#update using rjs
render :update do |page|
page[''my-items''].replace_html :partial =>
''your_partial''
end
end
You should read up a little about rjs, but the basic gist of it is that
you can get to any element on your page by using element proxies
(page[''my-items''] in the above example). One benefit of using
rjs is
that you can update and change as many items on the page you want, with
:update => ''my-items'', you are limited to updating one
thing on the page
per call.
Let me know if you need more help.
-Bill
Jean-nicolas Jolivet wrote:> Thank you for your response! I wasn''t aware of the observe_field
helper,
> this will definitely help me :)
>
> The part where I''m kinda hesitant though is that I''m not
sure where I
> should generate my html (ex: should i do it in the controller? seems
> like a weird place to do it..)
>
> From what I understand, I can make an Ajax request when my select drop
> down has changed, using the observe_field...
>
> now let''s say I do it like this:
>
> observe_field(''my-dropdown'', :update =>
''my-items'', :url => {:controller
> => ''items'', :action =>
''update_list''})
>
> So this would call the update_list option of my items controller, and
> update my div (''my-items'') with the respone, whenever
my-dropdown
> changes...perfect..sounds just like what I need...
>
> The question is... What do I put in the update_list action of my item
> controller? To return a formatted html response that I can update my div
> with? And when do RJS templates comes into play?
>
> I''m a bit lost...
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Awesome ! Got it to work Thanks a lot for your help! I pretty much did it the exact way you suggested (changed it so it fits my model etc..) but it works :) Now I only have to find a way to paginate that item list haha ;) -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---