2012-08-16 43 views
4

是否可以將除對象之外的選項傳遞給rabl部分?將任意選項傳遞給rabl部分/擴展

例如,父模板傳遞到基本模板稱爲「show_field1」一個選項:

extends "base", :show_field1 => true 

然後在base.rabl選項可以使用這樣的:

attribute :field1 if @show_field1 

的我唯一能夠選擇的方式就是通過這種可怕的方式尋找隱藏的祕密:

attribute :field1 if @_options[:show_field1] 
+0

你有沒有發現這樣做的更加eloguent方式? – Kamilski81 2013-03-02 19:19:24

+0

我最終實現了一個擴展的本地化參數,如erb模板使用,但我還沒有提出拉請求:https://github.com/bloomfire/rabl/compare/master...bloomfire – 2013-04-08 19:32:14

回答

0

另一種方法是將這些值存儲在頂層對象中,並讓擴展在模板中進行拾取。

感謝雷科@achiu

1

Rabl的通過使用特殊的locals哈希支持這一點:

# some_view.rabl 
extends "base", locals: { show_field1: true } 

# base.rabl 
attribute :field1 if locals[:show_field1] 

RABL Documentation on the subject