将 Rails 变量传递给液体可以在控制台中工作,但不在视图中

2024-05-15

我想将哈希传递给渲染方法。当我这样做时,在我的控制台中一切正常:

@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"])

但是,当我想通过我的控制器渲染页面并将其传递给需要香草液体的应用程序代理时,哈希键没有出现。但它被解释了,因为视图显示空白。如果根本不起作用,视图将显示:“欢迎来到 {{object_title}}”,或者由于语法错误甚至无法加载。

我尝试了几乎所有可能的方法来渲染模板。接下来的两个尝试不会引发错误,但仅在标题应出现的位置显示空白:

@pageview = Liquid::Template.parse(File.read(Rails.root + "app/views/app_proxy/show.html.erb"))
render text: @pageview.render('object_title' => @hash_object["title"]), content_type: "application/liquid"

第二个(我认为更干净,更像红宝石):

    respond_to do |format|
      format.html do
      render text: @pageview.render('object_title' => @hash_object["title"]), layout: false,  content_type: "application/liquid"
      end
    end

这些效果图哪里有错误或者我遗漏了什么?


@变量被分配给类的实例,而不是类本身,因此您需要将其声明为“初始化”方法(或“设置”方法,如果是测试)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Rails 变量传递给液体可以在控制台中工作,但不在视图中 的相关文章

随机推荐