2010-11-23 2 views
0

J'ai quelques problèmes avec le nouveau routage dans Rails 3. Quelle est la meilleure façon de préfixer le chemin avec un nom d'utilisateur. En ce moment j'ai le code suivant:Comment préfixer un contrôleur avec le nom d'utilisateur?

resources :links, :path => '/:username' do 
    put 'star', :on => :member 
end 

Mais il laisse params vide.

EDIT:

Je voudrais avoir un urls comme:

/:username/links 
/:username/links/:id/star 

Et je voudrais pouvoir chercher params [: nom d'utilisateur]

Répondre

3

Vous pouvez utiliser scope pour cela, il est beaucoup plus propre:

scope :path => ":username" do 
    resources :links do 
    put 'star', :on => :member 
    end 
end 
+0

Cela semble prometteur, mais quand j'essaye d'aller chercher params [: nom d'utilisateur], je n'ai rien. – magnushjelm

+0

@magnushjelm: Cela fonctionne réellement pour moi, je ne sais pas pourquoi le vôtre serait nul: https://gist.github.com/516d3dd3989dffe9ded5 –

+0

C'est très étrange. Quand je teste cela dans la console, cela semble fonctionner. Quand je teste dans le navigateur, les paramètres apparaissent parfois avec un retard d'une requête. Je suis en train de mettre à jour une application de 2.3.9 à 3.0.3 donc mon code est très probablement cassé ailleurs. – magnushjelm

-1

vous devez ressources emboîtés utilisateur

resources :users do 
    resources :links do 
    put 'star', :on=>:member 
    end 
end 

puis, si vous implémentez to_param dans user.rb

def to_param 
    username.parameterize 
end 

Ensuite, vous aurez

/:username/links 
/:username/links/23 
/:username/links/23/star 
+0

Je voudrais avoir/nom d'utilisateur /: liens, mais ne fonctionne pas cela me donne:/users /: nom d'utilisateur/liens? – magnushjelm

+0

Oui, cela lui donne/users /: nom d'utilisateur. Il le veut sans le préfixe/users /. –

Questions connexes