RESTful route question

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

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.

On Mar 15, 7:59 am, daphonz [email protected] wrote:

Have you tried just making a hidden field for the patient id?

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?

On Mar 15, 7:59 am, daphonz [email protected] wrote:

Have you tried just making a hidden field for the patient id?

BTW

<% form_tag group_labs_path, :method => :get do %>
<%= hidden_field_tag :patient_id, @patient.id %>

works perfectly of course :slight_smile: (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 :slight_smile:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs