2016-10-26 4 views
1

나는 백엔드에서 json 이하로 떨어지고있다.레일에서 배열의 첫 번째 요소에 액세스

{ drug: 
    { 

    "id": "580f323ee4b06ffee69041a1", 
    "direction": [ 
     { 
      "direction": "test", 
      "discarded": false 
     } 
    ] 
    } 
} 

나는 방향을 배열로하고 싶지 않다. 내가 JSON을 구문 분석하는 방법 drug_format을 쓴 있도록 객체로 원하는

다음과 같이 구문 분석에 대한 나의 루비 레일에 대한 코드는 다음과 같습니다

def drug_format drug 
{ 
    id: drug[:id], 
    direction: drug[:direction][0], 
} 
end 

를 이제 나는 다음과 같은 오류가 점점 오전 내 코드를 실행하려고 할 때.

NoMethodError (undefined method `[]' for nil:NilClass): 
    app/controllers/drugs_controller.rb:280:in `drug_format' 
    app/controllers/drugs_controller.rb:15:in `block in index' 
    app/controllers/drugs_controller.rb:14:in `each' 
    app/controllers/drugs_controller.rb:14:in `index' 

문제점은 무엇입니까?

+0

는 어떻게 부릅니까'drug_format : 당신이 with_indifferent_access

콘솔 출력을 사용할 수 있습니다

def drug_format drug { id: drug['id'], direction: drug['direction'][0] } end 

또는 '? – Stefan

+0

drug_format (drug) –

+0

'drug'이란 무엇이고'drug [: id]'또는'drug [: direction]'은 무엇을 반환합니까? – Stefan

답변

2

json으로 키는 문자열이 아니라 상징, 그래서 당신은 같은 것을 필요

params = { 
'drug' => { 
    "id" => "580f323ee4b06ffee69041a1", 
    "direction" => [ 
     { 
      "direction" => "test", 
      "discarded" => false 
     } 
    ] 
    } 
} 
=> {"drug"=>{"id"=>"580f323ee4b06ffee69041a1", "direction"=>[{"direction"=>"test", "discarded"=>false}]}} 

params[:drug] 
=> nil 

params['drug'] 
=> {"id"=>"580f323ee4b06ffee69041a1", "direction"=>[{"direction"=>"test", "discarded"=>false}]} 

def drug_format(drug) 
    { 
    id: drug['id'], 
    direction: drug['direction'][0] 
    } 
end 
=> :drug_format 

drug_format(params[:drug]) 
=> NoMethodError: undefined method `[]' for nil:NilClass 

drug_format(params['drug']) 
=> {:id=>"580f323ee4b06ffee69041a1", :direction=>{"direction"=>"test", "discarded"=>false}} 
+0

작동하지 않습니다. –

+0

마약 매개 변수에 액세스 할 때 문제가 될 수 있습니다 ... 내 편집 된 답변을 참고하십시오. – gabrielhilal

+0

GEnerated JSON이 올바르지 않습니다. 이 쉼표를 '방향 : 마약 [: 방향] [0]'으로 가져 가십시오. 왜냐하면 거기에있을 이유가 없기 때문입니다. 쉼표는 그 요소 다음에 다른 키가있을 것이라고 말합니다. –

관련 문제