葡萄:动态前缀?

时间:2017-03-17 14:51:35

标签: ruby-on-rails ruby grape

我有这样的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

1 个答案:

答案 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