Forum: Ruby on Rails Passing data from action of cntrlr 1 to action of cntrlr 2

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Lance K. (Guest)
on 2009-01-07 23:01
The question is about passing data from action of one controller to
action of another controller.

Inside the new_patient_controller i have the following code when the
button "next" is clicked

    def create_visit (created_patient)

This is suppose to call the index view of the "patient_visit" controller

Now the "patient_visit" controller has the following form

   1. <% form_for :patient_visit , :url => { :action =>
:save_patient_visit } do |form| %>
   3.     <p>
   4.       <%= label :patient_visit , :complaints , "Complaints:"  %>
   5.       <%= form.text_area :complaints , :size => 20 %>
   6.     </p>
   8.     <p>
   9.       <%= label :patient_visit , :systemic_history , "Systemic
History:"  %>
  10.       <%= form.text_field :systemic_history , :size => 40 %>
  11.     </p>
  13.     <p>
  14.       <%= label :patient_visit , :opthal_history  , "Opthal
History:"  %>
  15.       <%= form.text_field :opthal_history  , :size => 40 %>
  16.     </p>
  18.     <%= submit_tag "next" , :class => "submit"  %>
  20. <%end%>

Because of this the params which originally had the value of
"created_patient" now gets overwritten with the new params which has the
value of ":patient_visit" .

I need the created_patient value , cause i need to attach the
patient_visit database entry to the created_patient. ( since one patient
has many visits )
Mukund (Guest)
on 2009-01-08 11:30
(Received via mailing list)
Use the flash object to transfer data between controller actions.


On Jan 8, 2:01 am, Lance K. <removed_email_address@domain.invalid>
MaD (Guest)
on 2009-01-08 11:52
(Received via mailing list)
On 8 Jan., 10:29, Mukund <removed_email_address@domain.invalid> wrote:
> Use the flash object to transfer data between controller actions.

... or just add

  , :created_patient => params[:created_patient]

to your form (where you specify the action that is called) so your
param ain't lost.
on 2009-01-08 12:16
(Received via mailing list)
you can transmit values between controllers in the following ways:
- parameters to request (if not too long and not compromising
- session (recommended to store id, not objects)
Roy P. (Guest)
on 2009-01-08 15:33
(Received via mailing list)
Try something like:

  def create_visit(for_patient)
    # This populates patient_visit.patient_id w/the proper id value
    patient_visit =
    # Note that I've changed the action from index to new--that's
    # the convention for actions that create new objects.
    redirect_to(:controller=>"patient_visit", :action=>"new")

And then in your view, you add:

  <%= form.hidden_field(:patient_id) %>

Anyplace inside your form_for block.

That should get you a params[:patient_visit] from which you can create a
visit for a specific patient.


This topic is locked and can not be replied to.