我想将路由分组到层次结构中。为此我创建了一个顶级控制器:
MyApp.controllers :group do
disable :layout
get '/' do
{'dummy' => 'value'}.as_json
end
end
现在我想创建:group
作为父级的路由:
MyApp.controllers :items, :parent => :group do
disable :layout
get '/', :provides => :json do
# get list of items
end
end
我的问题是我可以从我的REST客户端访问localhost:port/group
(200 OK
),但我无法访问localhost:port/group/items
(404 NOT FOUND
)。
如果删除:parent
选项,一切都会很好用。我的padrino版本0.10.5.5。有什么想法吗?
答案 0 :(得分:3)
嵌套路线的工作方式与您尝试的方式不同。
当您使用:parent
时,它希望以某种方式识别父资源。例如:
MyApp.controllers :items, :parent => :group do
get :index do
# returns list of items for a group
end
end
将生成以下路线:
"/group/#{params[:group_id]}/items"
它希望您指定您正在讨论的组,以便获取该特定组的项目。
这就是为什么它说它找不到"/group/items"
,它不是你使用:parent => :group
创建的路线,你没有在参数中传递:group_id
。
如果您真的想使用"/group/items"
,那么您的项目控制器应如下所示:
MyApp.controllers :items do
get '/group/items' do
# returns list of items
end
end