原型

2010-08-23 47 views
1

回报率facebox我有facebox在我的Rails应用程序原型

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

现在,如果页面已加载的作品完美的使用下面的标记工作。

但是,我在页面的某些部分有更新,包含像上面显示的新链接。

当您单击来自ajax更新facebox的链接后面的模板不起作用。

我相信既然页面不刷新源代码是一样的:rel =>'facebox'不起作用。

有没有人有任何建议,我怎么能得到这个工作,而无需刷新页面?

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

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

但是,由于某些原因,在Chrome和IE中,facebox出现一瞬间然后消失。

有什么建议吗?我一整天都在撞墙。

谢谢

回答

1

所有你需要做的是确保你正在做一个JavaScript调用你的Ajax响应的看法某处facebox:可以说是最好的地点是在布局文件。只要确保你包括以下内容:

#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处理。

+0

这是如何工作原型? – Brian 2010-08-24 00:53:32

+0

我已经为答案添加了原型解决方案,它应该可以正常工作 - 但我很少使用原型,所以我不是100%确定。 – theTRON 2010-08-24 01:11:08

+0

耶不知道为什么,但它不起作用。我正在使用link_to_remote来更新我的页面上的部分。我将原型代码添加到我的模板中。 – Brian 2010-08-24 02:08:03