2014-07-17 177 views
0

所以我的Rails日志打印出从前端做一个POST请求时使用Ajax内部500服务器错误后导轨+角+ AJAX 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' 

这是奇怪,因为我做的是发现以下从该表中的ID从控制器

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 

,但我有ID更改查找到这个

ms = MedicalService.find_by_id(params[:id].to_i) 
这个动作个

我轨控制台报告一个不同的错误

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。但我不知道为什么这个行动失败了?

型号为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 

发布请求击中提交按钮

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]),而不是之后。
  • 看起来像params[:id]总是nil,这第一个日志"id" IS NULL LIMIT 1第二个"id" = 0 LIMIT 1nil.to_i返回0

我想问题,那么你尝试在前台打电话create_service_with_cpt地方。

也许吧id这个params["async_selected_treatment"]["id"]

+0

谢谢先生,它现在的作品! –

+0

我的荣幸,快乐编码! –