2017-09-30 7 views
0

J'ai une vue d'index et une action pour un modèle appelé ReferralRequest. Lorsque je crée la demande de référence, la méthode create dans mon contrôleur rend l'index et dans la méthode d'index j'ai @referral_requests = ReferralRequest.all. Pour une raison quelconque, cependant, lorsque j'appuie sur le formulaire/new et que je crée la demande de référence, NoMethodError apparaît dans ReferralRequests # create, une méthode indéfinie "each" dans cette ligne de l'index:Rails: Méthode Create et méthode d'index NoMethodError issue

<% @referral_requests.each do |referral_request| %> 

Je peux résoudre cette erreur en ajoutant @referral_requests = ReferralRequest.all à ma méthode create, mais cela me semble incorrect.

Quelqu'un peut-il comprendre ce qui se passe? Merci pour les commentaires!

Voici tout mon contrôleur demandes de renvoi:

class ReferralRequestsController < ApplicationController 
    before_action :require_login 

    def index 
     @referral_requests = ReferralRequest.all 
    end 

    def edit 
     @referral_request = ReferralRequest.find(params[:id]) 
    end 

    def update 
     @referral_request = ReferralRequest.find(params[:id]) 
     if @referral_request.update_attributes(referral_request_params) 
      flash[:success] = "Referral Request Updated!" 
      render 'referral_requests/index' 
     else 
      render "edit" 
     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 
    @patient = Patient.find(params[:patient_id]) 
    @referral_request = current_user.referral_requests.build(patient: @patient) if signed_in? 
    end 

    def show 
    @referral_request = ReferralRequest.find(params[:id]) 
    end 



private 

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

end 
end 
+0

probablement vous manque "end" entre ces méthodes, dans le contrôleur ReferralRequest – widjajayd

+0

À quoi ressemble votre nouvelle action? – hashrocket

+0

Merci pour l'aide - J'ai ajouté tout mon contrôleur de requêtes de référence à la question originale. – mike9182

Répondre

1

changez cette ligne: render 'referral_requests/index'

à:

redirect_to action: :index

comme rendant le modèle lui-même ne pas invoquer le contrôleur l'index d'action, mais la redirection sera