28

I would like to pass an extra parameter to a member route of a resource

something like:

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

I could only accomplish it using a static match statement

Looking around the internet I saw that this might be possible in Rails 3.0.2. I'm using 3.0.1 and it certanlly is not.

Am I doing something wrong? or is it really not possible?

thanks

Diogo
  • 283
  • 1
  • 3
  • 4
  • This is supposed to be possible with 3.0.1, are you getting an error? – edgerunner Nov 24 '10 at 20:13
  • found this, not sure if its related ... https://rails.lighthouseapp.com/projects/8994/tickets/5431-rails-3-rc-routing-resource-member-routes-lack-defaults – Diogo Nov 24 '10 at 20:33

2 Answers2

41

Try this:

resources :events do
  member do
    get 'register/:participant_type_id', :action => 'register'
  end
end
Fábio Batista
  • 23,648
  • 3
  • 51
  • 65
17

Just to complete the answer with my little findings. It also confused me for quite a while.

In Rails3, the member route with parameters will not have the automatic generated xx_yy_path helper. You need to add it providing the :as => part, omitted the resources name.

Regarding the example provided, to get register_event_path and register_event_url, you need to define it like the following:

resources :events do
  member do
    get 'register/:participant_type_id', :action => 'register', :as => 'register'
  end
end
Jonas
  • 3,329
  • 1
  • 33
  • 56
larryzhao
  • 3,005
  • 2
  • 38
  • 60