繁体   English   中英

Rails 4.1.4中的多态路由

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM