我安排了我的路线,以便在访问该站点时:id
显示在蛞蝓之前
match "/causes/:id/:slug" => "causes#show", :as => :cause, :via => 'get'
但我也有一个名为“post”的嵌套属性,它属于这样的原因
match "/causes/:id/:slug/posts" => "causes#posts", :via => 'get', :as => :posts
当我使用它时,一切都适用于原因,但不适用于帖子。
如果我使用
@post = Post.find(params[:id])
在原因或帖子控制器中,它总是查找原因的 ID,而不是帖子的 :id。所以如果帖子:id
是 9,原因:id
是 1,我使用
@post = Post.find(params[:id])
它总是会寻找post[1]
而不是 9 或任何帖子 id 的真正含义。
我究竟做错了什么?有没有办法让它在路由中工作,或者可能有不同的方法来找到控制器中嵌套对象的 id?
我需要路线是我设置的方式,:id/:slug...
耙路线信息:
cause GET /causes/:id/:slug(.:format) causes#show
edit_cause GET /causes/:id/:slug/edit(.:format) causes#edit
PUT /causes/:id/:slug(.:format) causes#update
posts GET /causes/:id/:slug/posts(.:format) causes#posts
POST /causes/:id/:slug/posts(.:format)
PUT /causes/:id/:slug/posts(.:format) causes#update_post
DELETE /causes/:id/:slug/posts(.:format) causes#destroy_post
causes GET /causes(.:format) causes#index
POST /causes(.:format) causes#create
任何帮助都会很棒。