0

重複の可能性:
ルーティング エラーが発生し続けるのはなぜですか?

申し訳ありませんが、もう一度質問しますが、最初は応答がありませんでした。

michael hartl railstutorial のhttps://github.com/railstutorial/sample_app_2nd_edにあるマイクロポストにコメントを追加しようとしています。

これが、routes.rb ファイルの問題の領域です。

resources :microposts, only: [:create, :destroy] do
    resources :comments, 
  end

ユーザーページにアクセスしようとすると、次のエラーが表示されます: No route matching {:controller=>"comments", :format=>nil, :micropost_id=>#}

これが rake routes | の出力です。grep コメント:

         user_comments GET    /users/:user_id/comments(.:format)                    comments#index
                       POST   /users/:user_id/comments(.:format)                    comments#create
      new_user_comment GET    /users/:user_id/comments/new(.:format)                comments#new
     edit_user_comment GET    /users/:user_id/comments/:id/edit(.:format)           comments#edit
          user_comment GET    /users/:user_id/comments/:id(.:format)                comments#show
                       PUT    /users/:user_id/comments/:id(.:format)                comments#update
                       DELETE /users/:user_id/comments/:id(.:format)                comments#destroy
    micropost_comments GET    /microposts/:micropost_id/comments(.:format)          comments#index
                       POST   /microposts/:micropost_id/comments(.:format)          comments#create
 new_micropost_comment GET    /microposts/:micropost_id/comments/new(.:format)      comments#new
edit_micropost_comment GET    /microposts/:micropost_id/comments/:id/edit(.:format) comments#edit
     micropost_comment GET    /microposts/:micropost_id/comments/:id(.:format)      comments#show
                       PUT    /microposts/:micropost_id/comments/:id(.:format)      comments#update
                       DELETE /microposts/:micropost_id/comments/:id(.:format)      comments#destroy

そして最後にここに私のcomments_controller.rbがあります

class CommentsController < ApplicationController 
  def create
    @micropost = Micropost.find(params[:micropost_id]) 
    @comment = @micropost.comments.build(params[:comment]) 
    @comment.user = current_user

    if @comment.save 
      redirect_to @micropost
    else 
      redirect_to @micropost
    end 
  end 

  def show
    @comment = Comment.find(params[:id])
  end

  def new 

  end

  def destroy
    @comment = Comment.find(params[:id])
    @comment.destroy
    redirect_back_or root_path
  end
end
4

1 に答える 1

1

宛先コードによって生成される経路は次のとおりです。

GET    /microposts/:micropost_id/comments
POST   /microposts/:micropost_id/comments
GET    /microposts/:micropost_id/comments/new
GET    /microposts/:micropost_id/comments/:id/edit
GET    /microposts/:micropost_id/comments/:id
PUT    /microposts/:micropost_id/comments/:id
DELETE /microposts/:micropost_id/comments/:id
POST   /microposts
DELETE /microposts/:id

したがって、コメント コントローラーにアクセス するには/microposts/:micropost_id/comments、フォームからURL に投稿する必要があり:micropost_idます。 は、コメントを追加するマイクロポストの ID 番号です。

投稿先の URL と、それが何を期待しているかを確認できますか?

于 2012-05-19T03:20:54.970 に答える