一千萬個為什麽

搜索

在渲染動作之前向RJS添加視覺效果


我剛剛開始使用RJS,這很棒但是我習慣將視覺效果放在link_to_remote等等,而且我不確定如何在觸發遙控器之前和之後觸發動作。

以此鏈接為例:

HTML

" style="float:left;"> 
 "comment_#{comment.id.to_s}", :url => edit_post_comment_path(comment.post, comment), :method => :get}%> | 

控制器:

def edit
  @comment = Comment.find(params[:id]) 
  respond_to do |format|
    #format.HTML render edit_comment_path(@comment)
    format.js 
  end
end

RJS:

page.replace_HTML "edit_comment_link_#{@comment.id.to_s}", "currently editing | "

因此,RJS主要用於渲染後的動作,如旋轉器應該使用 call_backs 將視覺效果放入link_to_remote中?這是一種很好的做事方式嗎?

最佳答案

你是這個意思嗎?

edit', 
        :url => edit_post_comment_path(comment.post, comment),
        :method => :get,
        :loading => "Element.show('spinner')",
        :complete => "Element.hide('spinner')" -%>

在rjs文件中,您可以使用page.delay堆疊效果/事件:

  item = "edit_comment_link_#{@comment.id.to_s}"
  page.replace_html  item,  :text => 'currently editing | '
  page.visual_effect :fade, item, :duration => 0.5
  page.delay 0.5 do
    page.visual_effect :highlight, "other_dom_object", :duration => 0.5
  end

more info on rjs events here: JavaScriptGenerator API Docs

轉載註明原文: 在渲染動作之前向RJS添加視覺效果

猜你喜歡