Polymorphic_url返回错误的路径

时间:2013-08-15 08:52:36

标签: ruby-on-rails ruby-on-rails-3 polymorphic-associations

在我的Rails应用程序中,我有一个Images类,Store& Maker,我已将Images设置为属于多态关联的imageable(遵循大多数标准文档和Railscast),大多数都有效,但是当我添加回来时按钮到图像我不确定我真正想要选择的是什么:

polymorphic_path(@imageable.images)

不起作用:image_image_image_image_image_path是产生的抛出错误,([@imageable, images])等各种不同的组合没有帮助。 @imageable肯定指向正确的类,如果我将其保留为polymorphic_path(@imageable),它将返回show传递的对象。

我猜我错误地理解了我是如何传递物体的,但是我看不到它们。

编辑:只是为了澄清,我的意思是返回到对象的图像索引。

编辑:只是为了扩展我尝试过的内容,polymorphic_url会返回相同的问题。 imageable_images_path不起作用,因为它不是:resource中的routes.rb[@imageable, images]返回images未定义。

编辑:要保存将其变成巨人,我会将相关文件添加为gists:

1 个答案:

答案 0 :(得分:1)

polymorphic_url

怎么样?

polymorphic_url(@imageable.images)或甚至polymorphic_url(images)之类的内容可能会有效

编辑:我想问题可能是@imageable

根据documentation

# 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_path(@imageable)并且它为您提供相关的展示页面时,这是有道理的,因为传递@imageable实际上是在传递imageable - /stores/X/images/1的特定实例或/stores/X/images/2等。如果您想转到索引,则不需要imageable的特定实例 - 您只想要images

这是未经测试的,但请尝试

polymorphic_path(store, :images) / polymorphic_url(store, :images)

<强> polymorphic_path(@imageable, :action => 'index')

来源:https://stackoverflow.com/a/6205831/2128691