-1

ルーティングエラーがありますが、ルートは正しいと思います。

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

私のルートは次のとおりです。

 resources :posts

  resources :user  do
    resources :posts,:comments
  end

  resources :posts do
    resources :comments
  end

エラーのあるリンクは次のとおりです。

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

何が悪いのかわかりません。

4

1 に答える 1

2

特定のユーザーに属する特定の投稿を編集するため、親を最初に配置して、これら2つをパラメーターとしてそのリンクに渡す必要があります。そうしないと、railsは編集しようとしている投稿を認識しません。

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

したがって、必要と思われるのはこれら2つの変数だけです。

レーキルートを注意深く読んでください。それは言う:

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

:user_idだから、あなたはあなたが必要としているのを見ることができます:id、そしてそれは投稿を参照しています。オブジェクトをパラメータとして指定するだけで十分です。railsは、オブジェクトのIDを把握し、リンクに使用するのに十分なほど賢いです。

于 2013-01-12T21:22:36.443 に答える