将 rails 个对象或变量传递给 liquid
Passing rails objects or variables to liquid
我为 shopify 编写了一个应用程序,它按设计运行。现在我想添加应用程序代理以将内容嵌入到商店中。代理工作正常,但 shopify 期望响应(在我的例子中是一个视图)为纯液体。 ruby 中的原始视图具有一些使用多个变量和对象的逻辑。
我安装了液体gem。我浏览的教程似乎有点过时了。
@template = Liquid::Template.parse("hi {{name}}") # Parses and compiles the template
@template.render( 'name' => 'tobi' ) # Renders the output
=> "hi tobi"
这是有效的,但它只适用于字符串。我看了 railscast,我认为这是让液体接触物体的简单方法。但它又过时了,“liquid_methods”不再起作用了。
所以我在我的模型中写了我自己的方法:
def to_liquid
{ "title" => self.title,
"description" => self.description
}
如果我尝试在我的控制台中使用我的方法渲染它,就像这样:
@template = Liquid::Template.parse("Welcome to {{object.title}}")
@template.render(object.title.to_liquid)
我收到以下错误:
Liquid::ArgumentError (Liquid error: Expected Hash or Liquid::Context as parameter)
现在我卡住了...
使用液体访问 RoR 对象的最简单方法是什么?
在尝试了几乎所有可能的传递变量的方法后,这成功了:
@object = Object.find(params[:id])
@hash_object = @object.to_liquid
@template = Liquid::Template.parse("Welcome to {{object_title}}")
@template.render('object_title' => @hash_object["title"])
我为 shopify 编写了一个应用程序,它按设计运行。现在我想添加应用程序代理以将内容嵌入到商店中。代理工作正常,但 shopify 期望响应(在我的例子中是一个视图)为纯液体。 ruby 中的原始视图具有一些使用多个变量和对象的逻辑。
我安装了液体gem。我浏览的教程似乎有点过时了。
@template = Liquid::Template.parse("hi {{name}}") # Parses and compiles the template
@template.render( 'name' => 'tobi' ) # Renders the output
=> "hi tobi"
这是有效的,但它只适用于字符串。我看了 railscast,我认为这是让液体接触物体的简单方法。但它又过时了,“liquid_methods”不再起作用了。
所以我在我的模型中写了我自己的方法:
def to_liquid
{ "title" => self.title,
"description" => self.description
}
如果我尝试在我的控制台中使用我的方法渲染它,就像这样:
@template = Liquid::Template.parse("Welcome to {{object.title}}")
@template.render(object.title.to_liquid)
我收到以下错误:
Liquid::ArgumentError (Liquid error: Expected Hash or Liquid::Context as parameter)
现在我卡住了...
使用液体访问 RoR 对象的最简单方法是什么?
在尝试了几乎所有可能的传递变量的方法后,这成功了:
@object = Object.find(params[:id])
@hash_object = @object.to_liquid
@template = Liquid::Template.parse("Welcome to {{object_title}}")
@template.render('object_title' => @hash_object["title"])