RoR facebox用于原型

时间:2010-08-23 22:53:07

标签: ruby-on-rails

我在使用rails应用程序中的以下标签工作了facebox

<%= link_to 'test' some_path, :rel => 'facebox' %>

现在,如果页面已经加载,那就完美了。

但是,我在页面的某些部分有ajax更新,其中包含如上所示的新链接。

单击ajax更新facebox中的链接后,无法使用该模板。

我相信由于页面没有刷新源代码是相同的,并且:rel =&gt; 'facebox'不起作用。

有没有人对如何在不刷新页面的情况下使其工作有任何建议?

我在控制器中的方法中试过这个。

render :update do |page|
  page << "
    facebox.loading();
    facebox.reveal('text', null); 
    new Effect.Appear(facebox.facebox, {duration: .3});     
  "  
end

然而,由于某些原因,在Chrome和IE中,facebox会短暂出现然后消失。

有什么建议吗?我一整天都把头撞到了墙上。

谢谢

1 个答案:

答案 0 :(得分:1)

你需要做的就是确保你在AJAX响应视图中的某个地方对facebox进行javascript调用:可以说最好的位置是在布局文件中。只需确保包含以下内容:

#app/views/layouts/ajax.html.erb
#...snip...

<% javascript_tag :defer => 'defer' do -%>
  jQuery(document).ready(function($) {
    $('a[rel*=facebox]').facebox();
  })
<% end -%>

或使用原型(未经测试):

#app/views/layouts/ajax.html.erb
#...snip...

<% javascript_tag :defer => 'defer' do -%>
  document.observe("dom:loaded", function() {
    $$('a[rel*="facebox"]').facebox();
  });
<% end -%>

这将确保页面上出现的任何新链接(作为AJAX更新的一部分)将由facebox处理。