2013-01-12 55 views
-1

我有一个路由错误,但我认为我的路线是正确的:Rails的路由错误,但是路线正确显示

Routing Error 

No route matches {:controller=>"posts", :action=>"edit", :user_id=>#<Post id: 9, title: "Na Curva do Horizonte", content: "Eu na mesma minha opinião no pensamento vejo me ca...", created_at: "2013-01-12 20:41:57", updated_at: "2013-01-12 20:41:57", image_file_name: "iris_by_archang3lzz-d5k2i5l.jpg", image_content_type: "image/jpeg", image_file_size: 1101282, image_updated_at: "2013-01-12 20:41:56", user_id: 5>} 
Try running rake routes for more information on available routes. 

当我执行rake routes,结果是正确的:

 user_posts GET /user/:user_id/posts(.:format)    posts#index 
        POST /user/:user_id/posts(.:format)    posts#create 
    new_user_post GET /user/:user_id/posts/new(.:format)   posts#new 
    edit_user_post GET /user/:user_id/posts/:id/edit(.:format)  posts#edit 
     user_post GET /user/:user_id/posts/:id(.:format)   posts#show 

我路线是:

​​

,并在错误的链接是:

<%= link_to 'Edit', edit_user_post_path(notice) %> 

我不知道什么是错的。

回答

2

既然你要编辑属于一个特定用户一个特定后,你需要在这两个作为参数传递给该链接通过,把父母第一。否则,rails不知道你要编辑哪个文章。

<%= link_to 'Edit', edit_user_post_path(@user, @post) %> 

所以你似乎需要的是这两个变量。

仔细阅读你的耙路。它说:

/user/:user_id/posts/:id/edit(.:format) 

所以你可以看到,你需要:user_id以及:id,它指的是岗位。将对象作为参数就足够了,rails非常聪明,能够找出它们的id并将它们用于链接。

+0

不工作,我通过用户,但有这个错误:PostsController中的AbstractController :: DoubleRenderError#编辑 渲染和/或重定向在此操作中被多次调用。请注意,您只能调用渲染或重定向,并且每次最多只能调用一次。另外请注意,重定向和呈现都不会终止该动作的执行,因此如果您想在重定向后退出动作,则需要执行诸如“redirect_to(...)并返回”之类的操作。 – overallduka

+0

错误消息解释了这一切。看看你的postscontroller的编辑方法 - 看起来你正在渲染/重定向到两次。摆脱一个例子。 – weltschmerz

+0

所以,现在它的问题在您的控制器操作不在路由 –