2017-03-17 68 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