首页 > 解决方案 > 将rails变量传递给液体在控制台中有效,但不在视图中

问题描述

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

@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

这些渲染中的错误在哪里或者我错过了什么?

标签: ruby-on-railsliquid

解决方案


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


推荐阅读