0

ルートファイルに次のものがあります。

namespace :forum do
  resources :topics
  resources :posts do
    resources :comments
  end
end

したがって、TopicsおよびPostsコントローラーはForumモジュール(Forum::TopicsControllerおよびForum::PostsController)内にありますが、Commentsコントローラーは多態的であるため(一部のコントローラー間で共有されているため)、そうではありません(単なるCommentsController)。

Forum::CommentsController問題は、アプリケーションが明らかに存在しないものを探すことです。どうすればそのリソースのモジュールを定義できませんか?

試しましたが、機能しませんでした。

namespace :forum do
  resources :topics
  resources :posts do
    resources :comments, controller => 'comments'
  end
end

助けていただければ幸いです、ありがとう!

4

3 に答える 3

1

これは最もクリーンではありませんが(これを実現するためのより良い方法があるかどうかはわかりません)、名前空間ではなくスコープを使用して、フォーラムの名前空間のリソースのコントローラーを明示的に設定できます。

scope '/forum' do
  resources :topics, controller => 'forum/topics'
  resources :posts, controller => 'forum/posts' do
    resources :comments
  end 
end
于 2013-03-11T06:15:42.460 に答える
1

わかりました。コメントコントローラーのコードを再利用したいと思います。そうですか?もしそうなら、私はこの質問に対する直接の答えを知りませんが、あなたはそのようなことを考えるかもしれないと思います。

コメント_controller.rb

module forum
  module posts
   class CommentsController < ApplicationController
     include Commentable
   end
  end
end

commentable.rb

module Commentable 

end

これで、このコメント可能なモジュールをどこでも使用できます。したがって、2つの機能を備えた共通コードを再利用しています。1。コントローラーごとに動作を自由に変更できます。2。コントローラーごとに個別のファイルを作成する必要があります。

于 2013-03-11T04:41:51.940 に答える
1

コメントのルートを手動で設定することもできます

例えば

match '/forums/:forum_id/posts/:post_id/comments/:comment_id' => 'comments#show'

したがって、コメントコントローラは他のモジュール内に配置する必要はありません

于 2013-03-11T05:50:57.860 に答える