Ruby on rails 无法为rails应用程序模型设置液体模板

Ruby on rails 无法为rails应用程序模型设置液体模板,ruby-on-rails,liquid,Ruby On Rails,Liquid,我在一个项目中工作,我想根据与自定义查询的关联动态创建小部件,并设置liquid来定制小部件的外观和感觉。我可以设置liquid,但是当我尝试使用for循环进行迭代时,我无法获得值,但是如果我将对象调用为string,那么我就能够获得它:{“netsales”=>42410110.43} 型号: class小部件查询列表 } 结束 def查询列表 @result=ActiveRecord::Base.connection.exec_查询(querys.map(&:statement.join)(

我在一个项目中工作,我想根据与自定义查询的关联动态创建小部件,并设置liquid来定制小部件的外观和感觉。我可以设置liquid,但是当我尝试使用for循环进行迭代时,我无法获得值,但是如果我将对象调用为string,那么我就能够获得它:
{“netsales”=>42410110.43}

型号:

class小部件查询列表
}
结束
def查询列表
@result=ActiveRecord::Base.connection.exec_查询(querys.map(&:statement.join)(“”)
@result.to_a.join(“”)
结束
结束
视图:


要访问带有液体的rails模型对象,必须为特定模型创建水滴。基本上,liquid允许用户自定义内容,Drop的存在是为了防止用户在数据库中做一些古怪的事情

您必须为每个要通过液体访问的模型创建水滴。在你的情况下是这样的:

module Drops
  class WidgetDrop < Liquid::Drop
   
   def  initialize(widget)
    @widget = widget
   end

   def name
    @widget["name"]
   end

   ...

end
{% for q in widget.query_list %}
    {{ q.netsales }}
{% endfor %}

# Output blank
module Drops
  class WidgetDrop < Liquid::Drop
   
   def  initialize(widget)
    @widget = widget
   end

   def name
    @widget["name"]
   end

   ...

end
template.assigns['widget'] = Drops::WidgetDrop.new(widget)