2017-03-17 5 views
0

J'ai api mis en place comme ceci:Raisin: préfixe dynamique?

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 

Problème: inherit classe Employee de Dashboard, et ce que je veux atteindre: ressources, qui hérite de Dashboard, devrait être accessible par son espace de noms '/dashboard/companies/:company_id/employees', avec current_company fonctionne correctement.

Je me sens fatiguant à chaque fois de fournir itinéraire complet au lieu de namespace pratique:

get 'companies/:company_id/employees' 
#... 
end 

Mais cela ne donnera pas suite nécessaire:

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

Répondre

0

D'après ce que j'undertand, vous êtes à la recherche pour l'espace de noms dynamique, n'est-ce pas? Vous pouvez définir des espaces de noms dynamiques à l'aide d'une chaîne au lieu d'un symbole. Dans la chaîne donnée, chaque partie :something indique un paramètre, même chose que ce à quoi vous pouvez être habitué dans la syntaxe des routes Rails ou Sinatra. Dans les terminaux, vous pourrez alors accéder au params[:something] comme vous le faites habituellement.

Par exemple, dans votre cas, vous pouvez utiliser quelque chose comme ceci:

namespace 'companies/:company_id' do 
    namespace :employees do 
    get do 
     # Will respond with the available params (containing :company_id) 
     body params 
    end 
    end 
end