代码之家  ›  专栏  ›  技术社区  ›  Rob

试图让液体宝石在轨道上工作

  •  0
  • Rob  · 技术社区  · 9 年前

    我正在构建一个应用程序来更好地学习rails,我正在尝试实现liquid gem

    只是想让它变得简单,这样我就可以通过使用@guide来理解它。name通过了液体模板,但当我把 {{ @guide.name }} 在模板中,它根本不渲染。

    category_item控制器

    def show
         @guide = Guide.friendly.find(params[:guide_id])
         @category = Category.friendly.find(params[:category_id])
         @category_item = Category.friendly.find(params[:category_id]).category_items.friendly.find params[:id]
    end
    

    show.html erb

    <% template = Liquid::Template.parse(@category.template) %>
    
    <%= template.render %>
    

    和在@category中。模板是

    the guide is {{ @guide.name  }}
    

    如果我把 hello 在@类别中。它渲染的模板很好

    我想我应该在category_item助手中添加一些东西,但我不确定该放什么。或者也许还有其他地方我应该补充信息。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Asad Ali    9 年前

    遵循液体宝石文档以更好地理解基础知识。在你的情况下 Liquid::Template.parse() 应该是这样的:

     <% template = Liquid::Template.parse('the guide is {{ @guide.name  }}') %>
     <%= template.render('@guide' => @guide) %>
    

    规则: 'string {{variable name only}} string '

    根据液体宝石文档示例:

     @template = Liquid::Template.parse("hi {{name}}") # Parses and compiles the template
     @template.render('name' => 'tobi')                # => "hi tobi"
    
        2
  •  1
  •   Rajesh Sharma    9 年前

    试试这个

    <% template = Liquid::Template.parse('the guide is {{ guide_name  }}') %>
    <%= template.render('guide_name' => @guide.name) %>
    

    基本上是将变量的散列作为映射传递给模板中使用的变量。

    希望有帮助