2012-06-06 4 views
1

méthode d'appel "de polymorphic_url" dans le contrôleur ou modèle avec tableau comme argument, comme:ArgumentError tableaux récursifs joindre

polymorphic_url([@agency, @agency.divisions.first]) 

faisant exception ArgumentError nommé "tableau récursif join". Aucune suggestion?

Je peux reproduire cette exception avec l'un des modèles:

@e = Estate.where(:booklets => {'$exists' => true}).first 
@b = @e.booklets.first 
polymorphic_url [@e,@b] 

rails 3.2.3, 3.2.4, 3.2.5

rubis 1.9.2, 1.9.3

+0

J'ai la même erreur sur des rails 3.2.3 avec link_to. Une erreur est survenue après la mise à jour du paquet aujourd'hui. J'utilise mongo et mongoid et ils ont été cassés à cause de la dernière mise à jour, mais j'ai déjà mis des versions plus anciennes dans Gemfile. Je ne sais pas si cela peut causer des problèmes ... Mais je n'ai rien changé dans les modèles, les vues ou les contrôleurs. J'ai seulement essayé d'installer jquery gem et faire une mise à jour. – Alexander

+0

Im utilisant mongoid aussi, et probablement problème après la mise à niveau vers la version 2.4.10. Im shure, problème identique, car "link_to" appelle "polymorphic_url" pour construire l'url. –

+0

Maintenant, force est d'utiliser mongoid '2.4.8', ce qui fonctionne bien en production, mais le problème n'est pas résolu. –

Répondre

0

Im résoudre ce problème par l'application forçant à utiliser BSON '1.6.2' https://github.com/mongoid/mongoid/issues/2069

+0

En passant, j'ai mis à jour à bson 1.6.4 dans environ deux heures. Il semble qu'il a été publié aujourd'hui. Et ça fonctionne bien. – Alexander

0

Je crois que vous en abusez. Selon APIDock, voici quelques exemples d'utilisation de polymorphic_url:

# calls post_url(post) 
polymorphic_url(post) # => "http://example.com/posts/1" 
polymorphic_url([blog, post]) # => "http://example.com/blogs/1/posts/1" 
polymorphic_url([:admin, blog, post]) # => "http://example.com/admin/blogs/1/posts/1" 
polymorphic_url([user, :blog, post]) # => "http://example.com/users/1/blog/posts/1" 
polymorphic_url(Comment) # => "http://example.com/comments" 

Alors peut-être que vous devriez utiliser:

polymorphic_url([@agency, @division]) 
2

Vous pouvez créer votre erreur avec un tableau qui contient une référence à lui-même:

a = [] 
a<<a 
a.join #ArgumentError: recursive array join 

Je devine ici, mais si divisions pointe vers le même tableau que @agencie (par exemple une agence étant sa propre division) Je peux imaginer s Quelque chose comme ci-dessus se passe. Peut-être que cela n'a rien à voir avec les mises à jour mais avec les données.