Dudebot
(Dudebot)
March 14, 2010, 3:50pm
1
I have in routes.rb
map.resources :labs, :collection => { :group => :get }
which is working. But when I try to pass a parameter, e.g.
<% form_tag group_labs_path( :patient_id => @patient.id ), :method
=> :get do %>
The :patient_id isn't getting passed to the controller:
--- !map:HashWithIndifferentAccess
group: !map:HashWithIndifferentAccess
id: "5"
commit: Add Lab
action: group
controller: labs
Doing it the non-restful way works:
<% form_tag :action => :group, :patient_id => @patient.id , :method
=> :get do %>
--- !map:HashWithIndifferentAccess
group: !map:HashWithIndifferentAccess
id: "6"
commit: Add Lab
method: get
authenticity_token: ...
action: group
patient_id: "8"
controller: labs
Any idea how to configure the route to pass the parameter?
Many TIA,
Craig
daphonz
(daphonz)
March 15, 2010, 12:59pm
2
Have you tried just making a hidden field for the patient id? Since
you're submitting a form as a GET request, it should post all form
data in the URL.
Dudebot
(Dudebot)
March 15, 2010, 6:15pm
3
That's an interesting design thought, which I'll play with. But it
seems to me I should still be able to configure the route in a RESTful
way. Any idea how?
Dudebot
(Dudebot)
March 16, 2010, 12:19pm
4
BTW
<% form_tag group_labs_path, :method => :get do %>
<%= hidden_field_tag :patient_id, @patient.id %>
works perfectly of course (Thanks!)
But I still don't understand why
<% form_tag group_labs_path( :patient_id => @patient.id ), :method
=> :get do %>
isn't permitted syntax. Someday I'll understand RESTful routes, but
not today