使用数组作为参数在控制器或模板中调用方法“polymorphic_url”,如:
polymorphic_url([@agency, @agency.divisions.first])
导致名为“递归数组连接”的ArgumentError异常。有什么建议吗?
我可以使用任何模型重现此异常:
@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
ruby 1.9.2,1.9.3
答案 0 :(得分:2)
您可以使用包含对自身的引用的数组创建错误:
a = []
a<<a
a.join #ArgumentError: recursive array join
我在这里猜测,但如果divisions
指向与@agencie
相同的数组(例如一个代理商是它自己的分部),我可以想象上面发生的事情。可能是它与更新没有任何关系,但与数据有关。
答案 1 :(得分:0)
我相信你是在滥用它。根据APIDock,以下是一些使用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"
所以也许你应该使用:
polymorphic_url([@agency, @division])
答案 2 :(得分:0)
我通过强制应用程序使用bson'1.6.2来解决这个问题 https://github.com/mongoid/mongoid/issues/2069