您设置的命名空间正在寻找如下所示的控制器类
class Api::Fb::MyListsController
如果你想要一条看起来像这样的路线/api/fb/my_lists
但你仍然想使用FbController
而不是有一个MyListsController
你需要将你的路线设置为如下所示
namespace :api do
scope "/fb" do
resources :my_lists, :controller => 'fb'
end
end
在我看来,而不是包含一个模块MyLists
在你的FbController
看起来有点尴尬。
我可能会做的是有一个模块FB
使用通用 FbController 然后有MyListsController < FbController
。无论如何,这超出了你的问题范围。
以上应该可以满足您的需求。
EDIT
根据您的评论以及我对您尝试执行的操作的假设,这是一个小例子:
配置/routes.rb
namespace :api do
scope "/fb" do
post "login" => "fb#login"
# some fb controller specific routes
resources :my_lists
end
end
api/fb/fb_controller.rb
class Api::FbController < ApiController
# some facebook specific logic like authorization and such.
def login
end
end
api/fb/my_lists_controller.rb
class Api::MyListsController < Api::FbController
def create
# Here the controller should gather the parameters and call the model's create
end
end
现在,如果您想创建一个MyList
对象然后你可以直接对模型执行逻辑。另一方面,如果您想要处理更多逻辑,您需要将该逻辑放入一个服务对象中,该对象处理 MyList 及其关联的 Wishes 或您的愿望的创建MyList
模型。不过我可能会选择服务对象。请注意,服务对象应该是一个类而不是一个模块。