0

私は投稿を作成し、それらをカテゴリで分割するための小さな割り当てに取り組んでいます。すべてが機能していますが、index.htmlで、リンクに関連する次のルーティングエラーが発生しています。

No route matches {:action=>"show", :controller=>"posts"}
No route matches {:action=>"edit", :controller=>"posts"}
undefined method `post_path' for #<#<Class:0x007fd3097f0ce0>:0x007fd3097c9370>

posts / index.html.hamlにあります:

    - @category.posts.each do |post|
        %tr
          %td= post.title
          %td= post.description
          %td= post.user_id
          %td= post.category_id
          %td= link_to 'Show', category_post_path //gives first error
          %td= link_to 'Edit', edit_category_post_path //gives second error
          %td= link_to 'Destroy', post, 
          :confirm => 'Are you sure?', :method => :delete //gives third error

ルート.rbで私は持っています:

resources :categories do
    resources :posts
  end

レーキルートを実行すると、次のようになります。

categories_index  GET    /categories/index(.:format)    categories#index                
category_posts    GET    /categories/:category_id/posts(.:format)     posts#index
                  POST   /categories/:category_id/posts(.:format)          posts#create
new_category_post GET    /categories/:category_id/posts/new(.:format)      posts#new
edit_category_postGET    /categories/:category_id/posts/:id/edit(.:format) posts#edit
category_post     GET    /categories/:category_id/posts/:id(.:format)      posts#show
                  PUT    /categories/:category_id/posts/:id(.:format)      posts#update
                  DELETE /categories/:category_id/posts/:id(.:format)      posts#destroy

これらに問題なくアクセスして表示できるため、インデックスに問題があり、アプリケーションがクラッシュします。

/categories/:category_id/posts/:id (equivalent to show)
/categories/:category_id/posts/:id/edit (equivalent to edit)

誰かが私を助けてくれますか?前もって感謝します。

4

1 に答える 1

1

URLヘルパーは、関心のあるカテゴリと投稿を知る必要があるため、特定のカテゴリと投稿オブジェクトをパラメータとしてヘルパーに渡す必要があります。私はこれらがうまくいくはずだと思います:

      %td= link_to 'Show', category_post_path(@category,post) //gives first error
      %td= link_to 'Edit', edit_category_post_path(@category,post) //gives second error
于 2012-05-17T21:10:59.253 に答える