2010-11-24 22 views
28

je voudrais passer un paramètre supplémentaire à un itinéraire membre d'une ressourceRails3 Routes - passage de paramètre à un itinéraire membre

quelque chose comme:

resources :events do 
    member do 
    get 'register/:participant_type_id' 
    end 
end 

je ne pouvais l'accomplir avec une allumette statique déclaration

En regardant sur Internet, j'ai vu que cela pourrait être possible dans Rails 3.0.2. J'utilise 3.0.1 et c'est certanlly non.

Est-ce que je fais quelque chose de mal? ou est-ce vraiment impossible?

grâce

+0

Ceci est censé être possible avec 3.0.1, êtes-vous une erreur? – edgerunner

+0

oui, j'ai «manquant: action» – Diogo

+0

trouvé cela, pas sûr si c'est lié ... https://rails.lighthouseapp.com/projects/8994/tickets/5431-rails-3-rc-routing-resource- member-routes-lack-defaults – Diogo

Répondre

40

Essayez ceci:

resources :events do 
    member do 
    get 'register/:participant_type_id', :action => 'register' 
    end 
end 
+1

Super, travaillé! Est-ce qu'il est documenté n'importe où, je n'ai pas pu trouver de référence ... – Diogo

+11

Je ne sais pas, je fournis juste ce que mon application me dit qu'elle manque. Il a dit «l'action manquante», je leur donne l'action. –

17

Juste pour compléter la réponse avec mes petites découvertes. Cela m'a aussi perturbé pendant un bon moment.

Dans Rails3, la route membre avec paramètres n'a pas l'aide xx_yy_path générée automatiquement. Vous devez l'ajouter en fournissant la partie :as =>, omis le nom resources.

En ce qui concerne l'exemple fourni, pour obtenir register_event_path et register_event_url, vous devez définir comme ce qui suit:

resources :events do 
    member do 
    get 'register/:participant_type_id', :action => 'register', :as => 'register' 
    end 
end 
+0

comment obtenir un ID d'événement dans l'action de registre? – lessless

+0

@lessless dans 'resources: events' et' member' Je crois qu'un paramètre 'id' représentant' id 'est automatiquement dans le chemin généré. – larryzhao