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

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
27f3a929c3bcf60ec6a0502db4bc189c?d=identicon&s=25 Lance Klusener (bhanub)
on 2009-01-07 22: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)
redirect_to(:controller=>"patient_visit",:action=>"index",:created_patient=>created_patient)
   end

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| %>
   2.
   3.     <p>
   4.       <%= label :patient_visit , :complaints , "Complaints:"  %>
   5.       <%= form.text_area :complaints , :size => 20 %>
   6.     </p>
   7.
   8.     <p>
   9.       <%= label :patient_visit , :systemic_history , "Systemic
History:"  %>
  10.       <%= form.text_field :systemic_history , :size => 40 %>
  11.     </p>
  12.
  13.     <p>
  14.       <%= label :patient_visit , :opthal_history  , "Opthal
History:"  %>
  15.       <%= form.text_field :opthal_history  , :size => 40 %>
  16.     </p>
  17.
  18.     <%= submit_tag "next" , :class => "submit"  %>
  19.
  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 )
29ebf90af6107d2eb39b587c7972639c?d=identicon&s=25 Mukund (Guest)
on 2009-01-08 10:30
(Received via mailing list)
Use the flash object to transfer data between controller actions.

Regards,
Mukund

On Jan 8, 2:01 am, Lance Klusener <rails-mailing-l...@andreas-s.net>
80e4cb97cae5c8d745f72337d93fd8f2?d=identicon&s=25 MaD (Guest)
on 2009-01-08 10:52
(Received via mailing list)
On 8 Jan., 10:29, Mukund <marut...@yahoo.com> 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.
1f36de0ab637612b390bbc4ac52b0b80?d=identicon&s=25 huard.elise@gmail.com (Guest)
on 2009-01-08 11: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
security)
- session (recommended to store id, not objects)
D6434aa0b7b350f8c3ed0119d81b2ead?d=identicon&s=25 Roy Pardee (rpardee)
on 2009-01-08 14: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 = for_patient.visits.new
    # 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")
  end

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.

HTH,

-Roy
This topic is locked and can not be replied to.