charlie.caroff-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2007-Jun-06 01:54 UTC
help with page.replace_html and partials
Hello, The gist of this is that I''m trying to move an item from one partial to another, and the item disappear when I delete it from the first partial, and have that item appear in the second partial instantly. Just moving a listing from one partial to another, without rerendering the entire page. Simple, right? Can''t figure it out. I have two partials (lists) on a page (index). Each partial gets drawn, paginated, from this part of my index controller: def index @listing_pages, @listings = paginate(:listings, :conditions => ["search_term_id = ? and deleted = ''0''", id], :order => ''position'', :per_page => 50) @deleted_listing_pages, @deleted_listings = paginate(:listings, :conditions => ["search_term_id = ? and deleted = ''1''", id], :order => ''updated_at DESC'', :per_page => 5) end Both partials work, and paginate correctly. I''ve put the code for them below. When I click a button, I want a listing''s "deleted" column in the database to update from 0 to 1, then update the _deleted_listings.rhtml partial, so that the "deleted" listings shows up in the "deleted_listings.rhtml" partial. I have an action in my controller called "update_deleted" that does just this, and it works in the database. I have a partial called update_deleted.rjs that looks like this: page.replace_html "deleted_web_listing", :partial => "deleted_listings" And it does not work. Help! I can''t figure it out. When I do this: page.replace_html "deleted_listing", ''<div>replacement text</div>'' I see "replacement text" in the right place. But when I put the partial name in there, I get an error that suggests that my partial _deleted_listings.rhtml is not picking up the right parameters to render properly, though it renders fine when called from the page index.rhtml.: ActionView::TemplateError (You have a nil object when you didn''t expect it! You might have expected an instance of Array. The error occurred while evaluating nil.each) on line #2 of app/views/ admin/_deleted_listings.rhtml: 1: <div id="deleted_web_listing" class="left_column_listing"> 2: <% for listing in @deleted_listings %> 3: <div id="deleted_item_<%=listing.id %>" class="box_left"> 4: <div class="x_image"> 5: <%= link_to_remote(image_tag("restore.gif", :size => "44x13", :border => "0" ), Charlie _listings.rhtml <div id="listing" class="listing"> <% for listing in @listings %> <div id="item_<%= listing.id %>" > <div id="box" class="box"> <div class="x_image"> <% item = "item_#{listing.id}" %> <% deleted_item = "listing" %> <%= link_to_remote(image_tag("x.gif", :size => "17x13", :border => "0" ), :url => { :action => ''update_deleted'' , :id => listing.id}, :before => visual_effect(:fade, "item_#{listing.id}", :duration => "0.5" ), :complete => visual_effect(:highlight, "deleted_listings_header", :startcolor => "''#FF0000''" )) %> </div> <table><tr> <td> <div class="search_result_position"><%= listing.position %>.</ div></td> <td><div class="search_result_title"><%link_to(truncate(listing.title, 60), {:controller => ''redirect'', :action => ''log_and_redirect'', :id => listing.id}) %></ div></td> </tr> </table> <div class="search_result_description"><%h(truncate(listing.description, 90)) %></div> <div class="search_result_url_to_show"><%h(truncate(listing.url_to_show, 70)) %></div> </div> </div> <% end %> </div> _deleted_listings.rhtml <div id="deleted_listing" class="left_column_listing"> <% for listing in @deleted_listings %> <div id="deleted_item_<%=listing.id %>" class="box_left"> <div class="x_image"> <%= link_to_remote(image_tag("restore.gif", :size => "44x13", :border => "0" ), :url => { :action => ''restore_deleted'' , :controller=> :admin, :id => listing.id}) %> </div> <div class="search_result_url_to_show"><%h(truncate(listing.url_to_show, 22)) %></div> <div class="search_result_description"><%h(truncate(listing.description, 35)) %></div> </div> <% end %> </div> --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
charlie.caroff-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:> I have an action in my controller called "update_deleted" that does > just this, and it works in the database. I have a partial called > update_deleted.rjs that looks like this: > > page.replace_html "deleted_web_listing", :partial => > "deleted_listings" > > And it does not work. Help! I can''t figure it out. When I do this: > > page.replace_html "deleted_listing", ''<div>replacement text</div>'' > > I see "replacement text" in the right place. But when I put the > partial name in there, I get an error that suggests that my partial > _deleted_listings.rhtml is not picking up the right parameters to > render properly, though it renders fine when called from the page > index.rhtml.:Is there perhaps a :before_filter that sets up one or more of the globals the partial is using that does not fire in the ajax stuff when the deletion fires the rjs? Maybe "logger.info" all of the globals the partial uses and see what''s not there? hth, jp -- 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 -~----------~----~----~----~------~----~------~--~---