Ruby on rails Rails路由错误,但路由显示正确

Ruby on rails Rails路由错误,但路由显示正确,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个路由错误,但我认为我的路由是正确的: 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-

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

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.
       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
我的路线是:

 resources :posts

  resources :user  do
    resources :posts,:comments
  end

  resources :posts do
    resources :comments
  end
错误的链接是:

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

我不知道出了什么问题。

因为您想要编辑属于特定用户的特定帖子,您需要将这两个作为参数传递到该链接,将父链接放在第一位。否则rails不知道您要编辑哪个帖子

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

因此,您可以看到您需要
:user_id
以及
:id
,这是指帖子。将对象作为参数就足够了,rails足够聪明,可以找出它们的ID并将它们用于链接。

不起作用,我传递给用户,但有一个错误:PostsController中的AbstractController::DoubleRenderError#edit Render和/或redirect在此操作中被多次调用。请注意,您只能调用render或redirect,每个操作最多只能调用一次。还请注意,重定向和渲染都不会终止操作的执行,因此,如果要在重定向后退出操作,则需要执行类似“重定向到(…)并返回”的操作。错误消息解释了这一切。看看你的postscontroller的编辑方法——看起来你正在两次渲染/重定向到某个东西。摆脱一个实例。因此,现在的问题在于控制器的操作而不是路由是的,我的控制器有重定向,谢谢帮助,谢谢。
/user/:user_id/posts/:id/edit(.:format)