我有这样的api设置:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="application" ng-controller="SampleCtrl">
<label>Time Start:
<input type="text" ng-model="timeStart"/></label>
<label>Time End:
<input type="text" ng-model="timeEnd"/></label>
<button ng-click="getForecast()">Get Forecast</button>
<hr/>
<div>
<b>Forecast Result:</b>
</div>
<pre>{{forecastReport | json}}</pre>
</div>
问题:我从class Dashboard < Api
def self.inherited(subclass)
super
subclass.instance_eval do
prefix 'dashboard'
#...
end
end
def self.company_id(path)
':company_id' + path
end
helpers do
def current_company
@current_company ||= Company.find(params[:company_id]) if params[:company_id]
end
end
end
继承了类Employee
,我想要实现的目标:继承自Dashboard
的资源应该由它的命名空间Dashboard
访问, '/dashboard/companies/:company_id/employees'
工作正确。
我每次都感到很累,提供完整的路线,而不是current_company
方便:
namespace
但这不会产生所需的结果:
get 'companies/:company_id/employees'
#...
end
答案 0 :(得分:0)
从我的承诺,你正在寻找动态命名空间,不是吗?您可以使用字符串而不仅仅是符号来定义动态命名空间。在给定的字符串中,每个:something
部分表示一个参数,与您在Rails或Sinatra路由语法中可能使用的相同。在端点中,您可以像往常一样访问params[:something]
。
例如,在您的情况下,您可能会使用以下内容:
namespace 'companies/:company_id' do
namespace :employees do
get do
# Will respond with the available params (containing :company_id)
body params
end
end
end