2016-06-09 73 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%...'。 '「#{...}」'總是不必要的。 –

相關問題