1

在控制器或模板中以数组为参数调用方法“polymorphic_url”,例如:

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

导致名为“递归数组连接”的 ArgumentError 异常。有什么建议么?

我可以使用任何模型重现此异常:

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

导轨 3.2.3、3.2.4、3.2.5

红宝石 1.9.2、1.9.3

4

3 回答 3

2

您可以使用包含对自身的引用的数组来创建错误:

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

我在这里猜测,但如果divisions指向与@agencie(例如,一个机构是它自己的部门)相同的数组,我可以想象上面会发生类似的事情。可能与更新无关,而是与数据有关。

于 2012-06-06T12:45:50.140 回答
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])
于 2012-06-06T12:15:23.387 回答
-1

我通过强制应用程序使用 bson '1.6.2' https://github.com/mongoid/mongoid/issues/2069来解决这个问题

于 2012-06-06T13:38:17.200 回答