【问题标题】:Liquid - Can you have a key with another key inside it.液体 - 你能有一把钥匙,里面有另一把钥匙吗?
【发布时间】:2016-02-23 01:54:06
【问题描述】:

假设你有一个{'name' => 'tobi', 'show-name' => 'This is {{name}}' } 的哈希

模板是"guess who this is? {{show-name}}"

我希望输出为guess who this is? This is tobi

但它是"guess who this is? {{show-name}}"

这只是一个简单的例子。但我需要它用于链接,例如

{'guide' => 'racing', 'guide-link' => '<a href='/guides/{{guide}}'>{{guide}}</a>' }`

模板:{{guide-link}}

我想要的输出:&lt;a href='/guides/racing'&gt;racing&lt;/a&gt;

我得到&lt;a href='/guides/{{guide}}'&gt;{{guide}}&lt;/a&gt;的输出

这可以用 Liquid 完成吗?我猜你可能称之为嵌套散列的键或值。

注意:我在轨道上的红宝石上使用液体宝石以防万一。

【问题讨论】:

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


    【解决方案1】:

    为什么不将值存储在字符串中并输出呢?

    基本上,而不是像

    foo = { 
            'guide' => 'racing', 
            'guide-link' => '<a href='/guides/{{guide}}'>{{guide}}</a>' 
          }
    

    你可以像这样使用字符串变量。

    guide = 'racing'
    foo = "<a href='/guides/#{guide}'>#{guide}</a>"
    

    #{guide} 语法相当于

    foo = "<a href='/guides/" + guide.to_s + "'>" + guide.to_s + "</a>"
    

    但是,听起来您应该使用将为您的模型生成的链接助手之一,而不是构建自己的链接。至少,利用link_to

    【讨论】:

    • 所以#{guide} 访问页面上的本地guide ruby​​ 变量?不幸的是,在这种情况下我不能使用link_to
    • 刚刚测试过,但有一个问题。当我使用控制器中的局部变量手动在控制器中创建散列时,它可以工作,但是如果我从数据库中提取散列,我应该将局部变量放在哪里?它还在控制器中吗?
    • 如果您需要从视图访问控制器中的数据集,请按照通常的方式进行操作。使用类变量。任何以@ 开头的变量都应该可以从您的视图中访问。
    • 谢谢。如果我输入#{guide},我有一个问题说guide = name。它显示为{name},如果我删除大括号,它会显示为name(这是更可取的)。是否应该省略大括号,将它们省略并将其保留为 #guide 是否有害?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    相关资源
    最近更新 更多