开发者

How to :update after :success with link_to_remote Rails method?

开发者 https://www.devze.com 2022-12-29 09:38 出处:网络
I\'m trying to get two things done after a user clicks on a link: Delete a div Add another element at the bottom of the page

I'm trying to get two things done after a user clicks on a link:

  1. Delete a div
  2. Add another element at the bottom of the page

I played with Rails link_to_remote and what I get with the code below is that the element is added before the div is deleted:

<%= link_to_remote "&#x2713;",
  :url => {
    :controller => :movies,
    :action => :mark_as_seen,
    :movie => movie,
    :render => 'movie' },
  :success => "Effect.Fade('movie_#{movie.id}_wrapper', { duration: 0.4 })",
  :update => "movies", :position => "bottom",
  :failure => "alert('Ooops! An error occurred.')"
%>

I tried to put :update and :position in a :complete callback, but nothing happened. And when I put both of t开发者_如何学Gohem in the :success callback (after Effect.Fade), all I get is a parsing error.

Any idea?

Thanks,

Kevin


I am not entirely sure if i understand correctly, but i am guessing you want the div to be deleted before the :update action takes place.

As usual this is surprisingly simple :)

<%= link_to_remote "&#x2713;",
  :url => {
    :controller => :movies,
    :action => :mark_as_seen,
    :movie => movie,
    :render => 'movie' },
  :before => "Effect.Fade('movie_#{movie.id}_wrapper', { duration: 0.4 })",
  :update => "movies", :position => "bottom",
  :failure => "alert('Ooops! An error occurred.')"
%>

so just replace the :success with :before will do that first. Hope this does what you want :)

The explanation is simple: the :success action is executed once the complete action is succesfully ended, so also the update. The :before action is executed before the remote action is executed. For instance i use this all the time to show a spinner during a remote action.

0

精彩评论

暂无评论...
验证码 换一张
取 消