将任意选项传递给rabl partial / extend

时间:2012-08-16 19:48:13

标签: ruby rabl

是否可以将对象以外的选项传递给rabl部分?

例如,父模板将名为“show_field1”的选项传递给基本模板:

extends "base", :show_field1 => true

然后在base.rabl中可以使用这个选项:

attribute :field1 if @show_field1

我能够选择的唯一方法是通过这种可怕的方式来寻找隐藏的方法:

attribute :field1 if @_options[:show_field1]

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

另一种方法是将这些值存储在顶级对象上,并让扩展在模板中拾取它。

感谢recco @achiu