【问题标题】:Options grape representer选项葡萄代表
【发布时间】:2015-05-11 10:07:43
【问题描述】:

我正在使用 Representers 开发 Rails API,使用以下 gem:GrapeRoarGrape-Roar

现在,我尝试添加条件以根据我从 API 端点传递的条件在我的表示器中包含(或不包含)某些属性,如 here 所述(请注意,可表示的 gem 由 Roar gem 使用)

我可能忽略了一些东西,但我不知道如何将选项传递给我的代表,所以我可以根据条件呈现属性

例如,在我调用的一个葡萄端点中:

present payment_object, with: PaymentRepresenter, include_orders: true

使用 PaymentRepresenter 呈现支付对象。如您所见,我也想包含相关的付款订单,所以在我的付款代表中我尝试这样做:

property :order, extend: OrderRepresenter, if: lambda { 
    |args| puts args[:include_orders] #just puts for testing
}

然而 args[:include_orders] 只是 nil

有谁知道我在这里做错了什么?

提前致谢!

【问题讨论】:

    标签: ruby-on-rails grape-api rails-roar representable


    【解决方案1】:

    我自己也遇到了这个问题,我想出的唯一解决方案是放弃漂亮的惯用 present..., with:... 并手动 extend 我的收藏/记录与代表,像这样(关于你的例子):

    payment_object.extend(PaymentRepresenter).to_hash(include_orders: true)
    

    【讨论】:

    • 谢谢@yaro 这完全有效!对于其他人:如果您需要像我一样在代表中使用环境变量,请务必在 to_hash() 中包含, env: request.env,例如对于 PATH_INFO
    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多