How to apply an effect to a link_to_remote :update without u


#1

Hey all,

I’ve been trying to apply a slide-down (or highlight) effect to a “New
card” link on my application. Because the item is new and I’m simply
updating it at the top, I can’t know what the div id is before I make
the request. link_to_remote :complete => visual_effect(:slidedown)
doesn’t do what I want it to do. My current solution is:

<%= link_to_remote ‘New card’,
:url => { :action => ‘new_card’, :id => @stack.id },
:complete => evaluate_remote_response %>

and then new_card returns JS:

new Insertion.Top(‘cards’,
‘<%= escape_javascript(render(:partial => “editcard”, :locals => {
:editcard => @card }))%>’);
new Effect.SlideDown(‘card<%= @card.id %>’);

but this just feels horribly, horribly wrong, because I can NOT be the
only person to ever need to do this. I know for sure that 37signals
had to do it, for that matter.

What I want to do is:

<%= link_to_remote ‘New card’,
:url => { :action => ‘new_card’, :id => @stack.id },
:update => ‘cards’, :position => :top,
:complete => visual_effect(:slidedown) %>

and then just render the partial in the controller. But this doesn’t
give me good results.

Am I just stuck returning JS this way? It seems awkward.

Thanks,

Patrick


#2

Using RJS will make it cleaner:

View:

<%= link_to_remote ‘New card’, :url => { :action => ‘new_card’, :id => @
stack.id } %>

new_card.rjs:

page.insert_html :top, ‘cards’, :partial => ‘editcard’, :object => @card
page.visual_effect :slide_down, “card#{@card.id}”

That should do what you’re after. To use RJS you need to be using edge
rails, or the plugin which is around somewhere. Just google for it.
-Jonathan.


#3

Ah, I see, and I found the plugin as well :slight_smile:

That does make it a lot cleaner. Thanks. Luckily TxD has edge rails on
it, or I can just keep using 1.0 :slight_smile: