[英]Polymorphic Routes in Rails 4.1.4
我在Posts和Postables之间有一个多态关联,现在Projects是我唯一的Postables。 在我的路线中,我有:
resources :projects do
...
member do
resources :posts
end
end
我知道如何从参数中检索正确的ID,并且我所有的控制器规格都通过了,但是当我尝试在视图中编写链接时,它们将不起作用。 跑rake routes
,我有点奇怪:
...
post SHOW /projects/:id/posts/:id(.:format) posts#edit
...
其余的依次类推。 如果我没记错的话,路径应该是'new_project_post',第一个参数应该是:project_id
。
现在,在“项目”的show
视图中,我具有该特定项目的帖子索引。 但是链接不起作用。 假设我有一个ID为2的项目,并且该项目的ID为1。
如果我尝试link_to 'Edit', edit_post_path(@project, post)
,则链接显示为.../projects/1/posts/1/edit
,因此:id
可以获取帖子的ID。 如果我交换post
和@project
,两个:id
都将是项目的ID。
如果我尝试将它们作为数组传递给link_to 'Edit', post_path([post, @project])
,则结果链接将为.../projects/1%2F2/posts/1%2F2/edit
。 %2F
是URL编码的斜杠字符,因此我不确定Rails在此尝试做什么。
如果我尝试对链接使用polymorphic_path([@project, post])
,它所做的只是吐出不存在的路径: undefined method 'project_post_path'
我尝试了其他几种参数组合,但均未成功。 因此,如果有人能指出正确的方向,我将非常感激。
Rails中嵌套资源的适当语法是:
resources :projects do
resources :posts
end
在member
块中,您只能声明其他操作以使用项目实例。
您正在member
内使用嵌套资源,这是不正确的。 在此处阅读有关此内容的更多信息: http : //thelazylog.com/posts/polymorphic-routes-in-rails
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.