2017-08-31 4 views
0

J'ai deux modèles: un pour le patient et un pour la demande de renvoi. J'ai créé deux formulaires - un qui permet à un utilisateur de créer un nouveau patient et un autre qui permet à un utilisateur de créer une demande de référence. Un patient peut avoir de nombreuses demandes de référence, et une demande de référence appartiendra à l'utilisateur qui l'a créé ainsi qu'au patient pour lequel il a été créé. Je n'arrive pas à trouver comment lier ces formes de manière à créer l'association entre le patient et la demande de référence que l'utilisateur lui a créée. Je pense que je dois mettre quelque chose dans le nouveau ou créer des actions du contrôleur de demandes de référence, mais je ne peux rien obtenir que j'ai essayé de travailler.Rails: Passer une variable d'un contrôleur à un autre pour deux formulaires

Toute aide appréciée pour une recrue!

patients Contrôleur:

class PatientsController < ApplicationController 

def new 
    @patient = current_user.patients.build 
end 

def create 
    @patient = current_user.patients.build(patient_params) 
    if @patient.save 
     flash[:success] = "Patient Created!" 
     redirect_to '/referral_requests/new' 
    else 
     Rails.logger.info(@patient.errors.inspect) 
     render 'patients/new' 
end 
end 


private 

def patient_params 
    params.require(:patient).permit(:age, :user_id, insurance_ids: [], gender_ids: [], concern_ids: [], race_ids: []) 

end 
end 

Referal contrôleur Demandes:

class ReferralRequestsController < ApplicationController 
    before_action :logged_in_user, only: [:show, :index, :new, :create, :edit, :update, :destroy] 

    def index 
     if logged_in? 
     @referral_request = current_user.referral_requests.build 
     @feed_items = current_user.feed.paginate(page: params[:page]) 
    else 
     @feed_items =[] 

    end 
end 

    def create 
     @referral_request = current_user.referral_requests.build(referral_request_params) 
     if @referral_request.save 
      flash[:success] = "Referral Request Created!" 
      render 'referral_requests/index' 
     else 
    Rails.logger.info(@referral_request.errors.inspect) 
     @feed_items = [] 
     render 'static_pages/home' 

    end 
    end 

    def destroy 
    end 

    def new 
    @referral_request = current_user.referral_requests.build if logged_in? 
    end 

private 

def referral_request_params 
    params.require(:referral_request).permit(:content, concern_ids: [], 
    insurance_ids: [], race_ids: [], language_ids: [], gender_ids: []) 

end 
end 

Répondre

1

vous devez passer dans le patient_id dans votre redirect dans la création de l'action PatientsController.

redirect_to '/referral_requests/new'

devrait devenir

redirect_to new_referral_request_path(patient_id: @patient.id)

puis à ReferralRequestsController vous pouvez associer le referral_request nouvellement construit avec le patient

def new 
    @patient = Patient.find(params[:patient_id]) 
    @referral_request = current_user.referral_requests.build(patient: @patient) if logged_in? 
end 

Puis dans votre referral_requests/new.html.erb formulaire que vous pouvez ajouter un hidden_field_tag ​​

form_for(@referral_request) do |f| 
    f.hidden_field :patient_id 
    ..... 
end 

qui ajoutera ensuite patient_id à dans la forme params et recopiez l'patient_id qui a obtenu associé à la nouvelle action du contrôleur

Vous devrez ajouter: patient_id dans votre méthode referral_request_params ainsi