2016-06-09 98 views
-1

我正在寻找一种方法将值传递给列表enumerable,所以我可以为<ul>生成一组列表项。该值应该由允许的项目显示。是否可以将值传递给YAML列表?

  • 收藏(15)< - 15是我想要显示的值。
  • 存档
  • 删除

下列不作为是工作,而是应该帮助说明实现的目标。

HAML

%ul 
    =list_of t('.menu', favorites_count: 15) do |item| 
    #{item} 

YAML

menu: 
    - new 
    - favorites ('%{favorites_count}') 
    - archived 
    - deleted 

注:最初我有我的YAML包括<李在字典的形式>标签,里面的字符串,其中一个包括计数值。但我觉得这是一个有点笨拙混合HTML和YAML,像这样:

menu: 
    first_item: <li>new</li> 
    second_item: <li>favorites %{favorites_count}</li> 
    third_item: <li>archived</li> 
    fourth_item: <li>deleted</li> 

在YAML因此寻找一种更简便的方法,这只会使得在HAML侧标签和不乱丢他们。

+0

有没有理由不这样做,例如,部分?把这个放在YAML中你会得到什么? –

+0

部分,我觉得有点矫枉过正。 –

+0

@Jordan我有多个其他“菜单”列表加载可变数量的菜单项和总是不同的名称,所以我需要为他们每个人创建密钥。 –

回答

1

I18n.t使用非常相似的sprintf的,你可以使用你的优势插语法:

%ul 
    = list_of t(".item") do |item| 
    = sprintf(item, favorites_count: 15) 

我不能完全肯定这是正确的Haml的语法,但你的想法。

+0

好东西,设法缩短一点: =“#{item}”%{favorites_count:15} –

+1

不要做'“#{item}”'。 '#{...}'用于字符串插值,但是这里没有插入任何东西。如果你知道'item'是一个字符串,只需使用'item'。如果你不确定它是一个字符串,请使用'item.to_s'。换句话说,做'= item%...'或'= item.to_s%...'。 '“#{...}”'总是不必要的。 –

相关问题