2010-08-23 5 views
1

J'ai facebox de travail en utilisant les balises suivantes dans mon application railsRoR facebox pour le prototype

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

Maintenant que fonctionne parfaitement si la page est déjà chargée.

Cependant, j'ai des ajax mises à jour sur certaines parties de la page qui contiennent de nouveaux liens comme celui montré ci-dessus.

Lorsque vous cliquez sur les liens d'une mise à jour ajax, la facebox ne fonctionne pas dans le modèle.

Je crois que puisque la page ne rafraîchit pas le code source est le même et: rel => 'facebox' ne fonctionne pas.

Est-ce que quelqu'un a des conseils sur comment je peux faire fonctionner ceci sans rafraîchir la page? J'ai essayé cela dans une méthode dans un contrôleur. Cependant, pour une raison quelconque, en chrome et en IE, le visage apparaît pendant une brève seconde puis disparaît.

Un conseil? Je me suis cogné la tête du mur toute la journée.

Merci

Répondre

1

Tout ce que vous devez faire, est de vous assurer que vous faites un appel javascript pour FaceBox quelque part dans la vue de votre réponse AJAX: sans doute le meilleur emplacement serait dans le fichier de mise en page. Assurez-vous que vous incluez les éléments suivants:

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

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

ou prototype (non testé):

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

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

Cela garantira que tous les nouveaux liens qui apparaissent sur la page, dans le cadre de vos mises à jour AJAX, sera être manipulé par facebox.

+0

Comment cela fonctionne-t-il pour le prototype? – Brian

+0

J'ai ajouté une solution prototype à la réponse, ça devrait marcher, mais j'utilise rarement un prototype, donc je ne suis pas sûr à 100%. – theTRON

+0

ouais pas sûr pourquoi mais ça ne marche pas. J'utilise link_to_remote pour mettre à jour une division sur ma page avec un partiel. J'ajoute le code prototype à mon modèle. – Brian