我刚刚开始使用RJS,这很棒,但我习惯将视觉效果放在link_to_remote等等,而且我不确定如何在触发遥控器之前和之后触发动作。
以此链接为例:
HTML
<span id="<%= "edit_comment_link_#{comment.id.to_s}"%>" style="float:left;">
<%= link_to_remote "edit", {:update => "comment_#{comment.id.to_s}", :url => edit_post_comment_path(comment.post, comment), :method => :get}%> | </span>
控制器:
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中吗?这是一种很好的做事方式吗?
答案 0 :(得分:0)
这是你的意思吗?
<%= link_to_remote '<span>edit</span>',
: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
有关rjs事件的更多信息:JavaScriptGenerator API Docs