2010-11-09 19 views
2

Je suis conscient que vous pouvez modifier les noms des routes pour concevoir, mais je suis à la recherche d'ajouter quelque chose à fait une route DEVISE, comme ceci:Rails personnalisés conçoivent urls

match "users/sign_up/:invitation_token', :controller => 'registrations', :action => 'new'" 

J'ai essayé ajouter cette ligne à la fois directement au-dessus et directement au-dessous de ma déclaration de routage:

devise_for :users, :controllers => { :registrations => "registrations" } 

Mais les rails ne voient pas la route. Existe-t-il un moyen d'ajouter un paramètre à l'URL générée?

Merci

+0

Quel est exactement le but? Les routes Devise sont assez fermées à la modification, sauf pour ce que l'API permet, mais vous pouvez peut-être trouver une solution élégante à votre tâche. –

+0

L'application sur laquelle je travaille exige d'être uniquement sur invitation. J'essaie donc de trouver un moyen d'intégrer un système d'invitation qui peut récupérer un jeton d'invitation à partir de l'URL, plutôt que de le faire couper par un utilisateur. collez-le (bien que ce sera toujours une option). –

+0

Quelle était la solution à ce problème? J'essaie de faire exactement la même chose. Suite avec le tutoriel railscast. – morcutt

Répondre

2

Je suppose que vous êtes sur des rails 3 en raison de l'utilisation du mot-clé « match ». Essayez la syntaxe suivante

match 'users/sign_up/:invitation_token', :to => 'registrations#new' 

Mettez cette ligne en dessous de votre ligne devise_for et vous devriez être bon d'aller.

Et puisque vos objectifs est de gérer les invitations, vous voudrez probablement vérifier https://github.com/scambra/devise_invitable (ne l'ont pas essayé moi-même)

1

Cependant, je recevais une erreur de routage. Cela a fonctionné pour moi:

devise_scope :user do 
    match "users/profile" => "sessions#show" 
    end