我正在编写一些可重用的代码,它允许资源嵌套在其他资源之下。路由可能如下所示:
resources :items do
resources :shared_users
end
resources :things do
resources :shared_users
end
路由工作很好,但是当我进入控制器时会出现问题。当我在控制器内部时,我想知道我嵌套在哪个资源中。我不一定只是检查请求路径或参数,因为这段代码是可重用的,我不知道它可能嵌套在哪些资源之下。
我想要的是这样的:
resources :items do
resources :shared_users, context: 'item'
end
resources :things do
resources :shared_users, context: 'thing'
end
然后在控制器中:
class SharedUsersController
def index
# Access context and react accordingly
end
end
例如,控制器可能希望根据请求加载Item
或Thing
类(即,对/items/1/shared_users
的请求,控制器应该能够使用Item
1}}加载资源的类。)
我如何将此类上下文从路由器交给控制器?
由于
答案 0 :(得分:1)
您可以像在示例代码中那样完全执行此操作:
resources :items do
resources :shared_users, context: 'item'
end
根据documentation,Rails无法识别的任何选项都作为请求参数传递。在您的控制器中,您可以执行以下操作:
def index
context = params[:context] # => 'item'
end