Forum: Ruby on Rails How to apply an effect to a link_to_remote :update without u

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.
E83550af3c08deeb8e1141e21e93468b?d=identicon&s=25 Patrick McCafferty (Guest)
on 2006-03-13 12:19
(Received via mailing list)
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
631d1677786f0725da6ccee46043686e?d=identicon&s=25 Jonathan Viney (Guest)
on 2006-03-13 12:31
(Received via mailing list)
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.
E83550af3c08deeb8e1141e21e93468b?d=identicon&s=25 Patrick McCafferty (Guest)
on 2006-03-13 22:27
(Received via mailing list)
Ah, I see, and I found the plugin as well :)

That does make it a lot cleaner. Thanks. Luckily TxD has edge rails on
it, or I can just keep using 1.0 :)
This topic is locked and can not be replied to.