我有一個Rails API,用於RABL將JSON發送回客戶端。我需要爲Question
模型提供show
和index
操作。在這個例子中,一個Question has_many Answers.
Rails JSON API,如何處理RABL中的零對象?
你如何處理RABL中的零對象?該API拋出錯誤,因爲我在question
對象nil
(傳入的question_id
不存在)上調用.answers
。
我可以用if
像下面這樣一個question
不存在會不會導致錯誤包裹Rabl的協會組成部分,
# questions/show.rabl
object @question
attributes :id, :text
node(:answer_id) do |question|
if question != nil # <-- This if keeps the .answers from blowing up
answer = question.answers.first
answer != nil ? answer.id : nil
end
end
但是,後來當我打電話/api/questions/id_that_doesn't_exist
我得到這個返回:{answer_id:null}
而不僅僅是{}
。
我試圖在if
這樣環繞整個節點元素,
if @question != nil # <-- the index action doesn't have a @question variable
node(:answer_id) do |question|
answer = question.answers.first
answer != nil ? answer.id : nil
end
end
但後來我index
行動將不會返回node(:answer_id)
因爲@question
從集合調用當它不存在。
有沒有辦法讓這兩種行爲?
# questions/index.rabl
collection @questions
extends "questions/show"
怎麼樣有if語句在控制器和明確在那裏渲染空對象? – j03w
這似乎有點冒失,但它確實使錯誤消失。如果我返回'{}'如果對象爲零,我會從調用中返回'[]'。這可能是一個比錯誤更好的解決方案。 – jmosesman