【发布时间】:2011-02-08 04:13:11
【问题描述】:
我有一个 RJS 模板,我基本上用它来执行以下操作:
淡出提交的表单 显示响应弹出 div 使用分部调出新表单
我想要做的是让 RJS 推迟显示第二个表单,直到用户单击弹出窗口上的“x”按钮。
目前的RJS代码如下:
unless @actor.health <= 0 || @actor.finished
page.visual_effect(:fade, "act_form", :duration => 0.5)
if @actor.acts.last.decision.consequence && @actor.acts.last.decision.consequence != ""
page.insert_html :after, 'act_form_wrapper', :partial => 'consequence'
page.assign 'popup', true
end
page.delay(1) do
page.replace_html("act_form", :partial => 'act_form')
if @prompt.decisions.count > 1
page.assign 'decEmpty', true
else
page.assign 'decEmpty', false
end
if @actor.play.comment_req
page << 'document.getElementById("act_comment").value = ""'
end
page.visual_effect(:appear, "act_form", :duration => 0.5)
end
page.replace_html("scores", :partial => 'scores')
else
flash[:notice] = 'This game is finished. How did you do?'
page.redirect_to(@actor)
end
弹出的 div 看起来像:
<span class="close_consequence"><%= link_to_function image_tag('close.png', :alt => 'close'), "$('.consequence_popup').remove(); popup=false;" %></span>
我的想法是让“popup”Javascript 变量被某种 while 循环或观察者使用,如果它是真的会推迟,然后在它是假的时候运行。不确定这是否可行,或者我是否应该完全不同地这样做。 RJS 的东西对我来说仍然是个谜。
【问题讨论】:
标签: javascript ruby-on-rails ajax observer-pattern rjs