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)