2017-03-17 69 views
0

我已经API设置是这样的:葡萄:动态前缀?

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 

但是,这不会给需要的结果:

namespace :companies do 
    namespace :employees do 
    ... 
    end 
end 

回答

0

从我undertand,你看对于动态命名空间,不是吗?你可以用一个字符串而不是一个符号来定义动态命名空间。在给定的字符串中,每个: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