2014-07-17 3 views
0

그래서 내 레일 인쇄 로그 내가 뭘 모두가 찾는 때문에 이상한 아약스내부 500 서버 포스트 오류 레일 + 각도 + 아약스 ID 오류

MedicalService Load (0.2ms) SELECT "medical_services".* FROM "medical_services" WHERE "medical_services"."id" IS NULL LIMIT 1 
Completed 500 Internal Server Error in 7.2ms 

NoMethodError (undefined method `id' for nil:NilClass): 
app/controllers/provider_medical_services_controller.rb:50:in `create_service_with_cpt' 

와 프론트 엔드에서 POST 요청을 수행 할 때 다음과 같은 컨트롤러

def create_service_with_cpt 
ms = MedicalService.find_by_id(params[:id]) 
puts ms.inspect 

pms = ProviderMedicalService.new 
pms.medical_service_id = ms.id 
pms.provider_id = current_provider.id 
pms.cash_price = params[:cash_price] 
pms.average_price = params[:average_price] 
pms.description = params[:description] 
pms.save 
render json: pms 
end 

하지만 난이

ms = MedicalService.find_by_id(params[:id].to_i) 
,536,913에 id로 찾기를 변경할 수 있습니다에서이 작업에 해당 테이블의 ID 63,210

내 레일 콘솔 보고서를 다른 오류

MedicalService Load (0.3ms) SELECT "medical_services".* FROM "medical_services" WHERE "medical_services"."id" = 0 LIMIT 1 
Completed 500 Internal Server Error in 8.3ms 

NoMethodError (undefined method `id' for nil:NilClass): 
app/controllers/provider_medical_services_controller.rb:50:in `create_service_with_cpt' 

난 내 레일 콘솔에서 확인하고 의료 ID가 존재한다. 그러나 나는 왜 그 행동이 실패하고 있는지 모른다.

제출 버튼을

Started POST "/api/provider_medical_services/existing" for 127.0.0.1 at 2014-07-17 14:39:35 -0700 
Processing by ProviderMedicalServicesController#create_service_with_cpt as JSON 
Parameters: {"async_selected_treatment"=>{"approved"=>true, "created_at"=>"2014-07-17T08:29:41Z", "description"=>"Regular Check up", "id"=>1, "service"=>"92113", "specialty_id"=>nil, "standard"=>nil, "updated_at"=>"2014-07-17T08:29:41Z"}, "average_price"=>300, "cash_price"=>200, "description"=>"Regular Check up", "service"=>"92113", "provider_medical_service"=>{"cash_price"=>200, "average_price"=>300}} 

답변

1
  • .find_by_id(params[:id].to_i) 초과 사용 .find(params[:id]) 대신 타격 후 MedicalService

    class MedicalService < ActiveRecord::Base 
        attr_accessible :service, :description, :specialty_id, :approved 
    
        has_many :provider_medical_services 
        has_many :providers, through: :provider_medical_services 
    
        has_many :taggings, as: :taggable 
        has_many :tags, through: :taggings 
    end 
    

    포스트 요청에 대한 모델.

  • params[:id]처럼 항상 nil 인이 첫 번째 로그 "id" IS NULL LIMIT 1이 두 번째는 "id" = 0 LIMIT 1입니다. 0

내가 문제를 다음 프론트 엔드 어딘가에 create_service_with_cpt를 호출하려고 생각 반환 nil.to_i.

아마도 idparams["async_selected_treatment"]["id"]?

+0

고마워요! –

+0

즐거움, 행복한 코딩! –