与rabl路轨的空的汇集

时间:2014-08-27 11:24:12

标签: ruby ruby-on-rails-4 null rabl

尝试从rabl

渲染空数组时遇到问题
#app/controllers/recipes_controller
class RecipesController < ApplicationController

   respond_to :json 

   def unpublished
      @unpublished = Recipe.unpublished.for_user(<uer id>)
   end 
end

#app/views/recipes/unpublished.rabl
collection @unpublished
attributes :id

但问题是如果@unpublished #=> [],我的rabl模板为nil:NilClass`错误提供了undefined method id'。

我做了一些搜索,我找不到一个简单的方法。我相信应该有一个简单的方法,例如:

collection @unpublished
attributes :id , if => :id

2 个答案:

答案 0 :(得分:0)

Rabl似乎没有解决方案。你的答案似乎很好但如果你有很多属性会很麻烦。您可以为所有属性here

提供条件lambda

答案 1 :(得分:0)

我认为你可以使用

    if @unpublished.id.present?
       attributes :id
    else
       extends "you can create a file rabl for handle is {#api/error}"
    end

    example: error.rabl

    object false
    node :message do
      "some think went wrong"
    end

我希望这可以帮助,:))