如何将带参数的方法传递给#to_xml?
@object.to_xml(:methods => [:a_method_with_args] )
有办法做到这一点吗?什么是正确的语法?
感谢。
答案 0 :(得分:0)
to_xml应该表达你的模型的状态。因此它不应该需要任何外部“位置”参数。如果这真的是你需要的话,你看起来需要一个'在位置X'给我一个我模型的xml表示'。我想你可以在你的模型中添加一个'set_default_location',并将price_points_for_location更改为参数的默认值:
attr_writer :default_location
def price_points_for_location(location = @default_location)
...
end
答案 1 :(得分:0)
你可以尝试重新定义像
这样的to_xml方法def to_xml(location)
# do your stuff
super()
end
但不确定它会如此有效。其他选项是为您的模型创建一些新的XML视图方法,例如:
def as_xml(location)
self.price_points_for_location(location)
self.to_xml
end
答案 2 :(得分:0)
感谢您的回答,他们看起来很不错。我实际上最终做的是使用proc。我知道我可以使用to_xml的procs,但是当迭代多个对象时,你似乎无法访问数组中的当前对象。为了解决这个问题,我做了类似的事情:
price_points = @items.map { |item| item.price_points_for_location(location) }
price_point = Proc.new {|options| options[:builder].tag!('price_points', price_points.shift) }
@items.to_xml(:procs => [price_point])