2017-12-27 30 views
0

Rabl은 주 객체를 생성하지 않지만 자식 노드에 대해 생성합니다.내 RABL 파일에 어떤 문제가 있습니까?

저는 Rails-Angularjs 프로젝트가 있습니다. json 파일을 생성하기 위해 RABL을 사용하고 싶습니다. 설명 된 바와 같이 나는 RABL의 문서를 읽고 제대로 작동하지 않는 액션 쇼에 대한 Rabl 파일을 만든 :

object @ticket => :ticket do 
    attributes :id, :name, :subname, :description, :width, :height, :qty, :single, :double, :project_id, :material_id, :equipment_id, :location_id, :created_at, :updated_at 
end 

child :project do 
    attributes :name, :nickname, :project_number 
end 

child :job_state do 
    attributes :color, :name 
end 

child :location do 
    attributes :name 
end 

child :local_equipment do 
    attributes :name 
end 

child :local_material do 
    attributes :name 
end 

IF I 제거는 객체 @ticket에와 '말'을 '어떻게', 그것은 던졌습니다 오류 : 'wrong number of arguments (1 for 0)'.

티켓을 남기면 티켓의 필드 이름이 표시되지 않습니다. 아래에 표시된 바와 같이 :

{"ticket":{"project":{"name":"Information Security Conference 2017","nickname":"infosecon17","project_number":1000},"job_state":{"color":"red","name":"printed"},"location":{"name":"Grand prairie graphics"},"local_equipment":null,"local_material":null}} 

도움이 되겠습니다.

답변

0

각도 문제가 레일 측면에서 발생하지 않는 경우이 구조는 저에게 적합한 구조입니다. \ 응용 프로그램 티켓 \ 전망 :이 같은 별도의 파일이있을 것입니다 티켓 \ show.json.rabl \ 응용 프로그램 \ 전망을 아이들 만

object @ticket 
attributes :id, :name, :subname, :description, :width, :height, :qty, :single, :double, :project_id, :material_id, :equipment_id, :location_id, :created_at, :updated_at 

포함하여 티켓 # 쇼 파일이 여기라는 이름 있는지 확인 \ projects.json.rabl에

collection @projects 
extends "projects/show" 

이 포함될뿐만 아니라 어쨌든 속성이 스키마와 일치하는지 확인하십시오.

+1

@ user3538384,이 답변을 수락했음을 알 수 있었지만 답변에서 다양한 가능성 (각도, 특성 또는 rabl 파일 구조)을 언급했습니다. 어떤 문제가 해결되었는지 말할 수 있다면 유용 할 것입니다. 그런 식으로 비슷한 문제를 가진 사람들도 배울 수 있습니다. 감사 – olucube

0

나는 당신이 올바른 길에 있다고 생각합니다. 나는 하나의 작은 변화를 만들 것이다. 블록에 @ticket 속성을 래핑 할 필요가 없습니다. object @ticket을 지정하고 거기에서 이동할 수 있습니다.

object @ticket 
attributes :id, :name, :subname, :description, :width, :height, :qty, :single, :double, :project_id, :material_id, :equipment_id, :location_id, :created_at, :updated_at 

child :project do 
    attributes :name, :nickname, :project_number 
end 

child :job_state do 
    attributes :color, :name 
end 

child :location do 
    attributes :name 
end 

child :local_equipment do 
    attributes :name 
end 

child :local_material do 
    attributes :name 
end 
+0

신속한 답변을 위해 Derek Hopper에게 감사드립니다. 정말 감사. 하지만 내가 설명했듯이, 내가 네가 한대로해라. Tickets # show에 ArgumentError 오류가 발생합니다. 잘못된 인수 수 (0은 1). 나는 네가 옳았다는 것을 이해하고 전에 그것을 시도했다. Rails 4.2.6이 설치되어 있어야합니다. – user3538384

+0

'@ ticket' 속성에 대해서'id : id :'id : id '만 지정하려고했습니다. 어쩌면 인수를 요구하는 목록의 속성이있을 수 있습니다. –