【问题标题】:Stuck trying to get the liquid gem to work in rails试图让液体宝石在轨道上工作时卡住了
【发布时间】:2016-01-14 10:12:19
【问题描述】:

我正在构建一个应用程序来更好地学习 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.template 中是

the guide is {{ @guide.name  }}

如果我只是将hello 放在@category.template 中,它会呈现良好

我想我应该在 category_item 帮助器中添加一些东西,但我不知道该放什么。或者也许还有其他我应该添加信息的地方。

【问题讨论】:

  • 并不是说听起来很难,但如果您只是在学习 Rails,为什么要使用这种非标准的诱人引擎?看起来有人试图在 Ruby 中重新实现 PHP Smarty,这对我来说完全没有意义......
  • 这是我正在尝试构建的应用程序的主要解决方案。所以用户可以编辑页面模板

标签: ruby-on-rails ruby-on-rails-4 rubygems liquid


【解决方案1】:

遵循液体宝石文档以更好地了解基础知识。在您的情况下,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"

【讨论】:

  • 仍然只是输出'指南是'然后什么都没有。他们示例中的“hi toby”植入有效,但我无法获得像@guide 这样的变量来工作
  • 您确定@guide 已初始化吗?你能告诉我@guide.inspect的输出吗?
【解决方案2】:

试试这个

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

基本上将变量的哈希值作为映射传递给您在模板中使用的变量。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    相关资源
    最近更新 更多