Ruby Padrino中的嵌套路由
我想将路由分组到层次结构中。为此,我创建了一个顶级控制器,因此:Ruby Padrino中的嵌套路由,ruby,routes,padrino,Ruby,Routes,Padrino,我想将路由分组到层次结构中。为此,我创建了一个顶级控制器,因此: MyApp.controllers :group do disable :layout get '/' do {'dummy' => 'value'}.as_json end end 现在我想创建以:group为父级的路由,因此: MyApp.controllers :items, :parent => :group do disable :layout get '/', :provi
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未找到
)
如果我删除
:parent
选项,一切都会运行良好。我的padrino版本0.10.5.5。有什么想法吗?嵌套路由的工作方式与您尝试的不同
当您使用: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\u id
如果您确实想使用“/group/items”
,那么您的items控制器应该如下所示:
MyApp.controllers :items do
get '/group/items' do
# returns list of items
end
end
嵌套管线的工作方式与您尝试执行的不同 当您使用
: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\u id
如果您确实想使用“/group/items”
,那么您的items控制器应该如下所示:
MyApp.controllers :items do
get '/group/items' do
# returns list of items
end
end
嵌套管线的工作方式与您尝试执行的不同 当您使用
: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\u id
如果您确实想使用“/group/items”
,那么您的items控制器应该如下所示:
MyApp.controllers :items do
get '/group/items' do
# returns list of items
end
end
嵌套管线的工作方式与您尝试执行的不同 当您使用
: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\u id
如果您确实想使用“/group/items”
,那么您的items控制器应该如下所示:
MyApp.controllers :items do
get '/group/items' do
# returns list of items
end
end