2013-03-26 36 views
2

我有一種情況,我需要在div上設置「data- *」的值。我使用的代碼實際上是這一個:set data- * attribute

= tag('div', { class: 'agile-carousel',\ 
       data: { carousel_list: url_for(format: :json) } }, true) 
    = "</div>".html_safe 

這太可怕了。另外,rails會以<div />的方式關閉div,Chrome和其他瀏覽器肯定不喜歡(創建一些災難)。

所以我的解決方案就是那個。我想問問是否有另一種方式來做到這一點。

更新1:

小問題我也有,這樣的代碼:

span class==I18n.locale == locale_used ? "inactive" : nil 
    = link_to(I18n.t('locale_name', locale: locale_used),\ 
      url_for(locale: locale_used)) 

如果我刪除的link_to它的工作原理。請注意,如果我插入甚至像| text它返回一個錯誤:syntax error, unexpected keyword_ensure, expecting $end

+0

除非明確需要輸出未轉義的內容,否則應該使用'='而不是'=='。 – meagar 2013-03-26 21:05:45

+0

您還應該提出一個單獨的問題,因爲您與更新後的代碼存在無關的問題。 – meagar 2013-03-26 21:07:26

回答

6

可以使用content_tag而不是tag產生<div></div>代替<div>,但你不應該。

您使用Slim,所以使用超薄

.agile-carouesel data-carousel_list=url_for(format: :json) 

輸出:

<div class="agile-carouesel" data-carousel_list="some URL"></div> 

修身和HAML整點是,你有寫作標籤這個飛馳簡潔的語法。你應該使用它,而不是在不需要的時候使用Rails的標籤助手。通過使用它們,您將重新引入它們應該刪除的所有標點符號混亂。

+0

我正在使用苗條,但我有問題,因爲雖然標籤幫手轉換carousel_list **數據輪播列表**,苗條只是給我一個錯誤。 – 2013-03-26 18:39:36

+0

我剛試過,它沒有那樣做。上面的輸出'

'對我來說,特別是'data-carousel_list'。它絕對不會*重寫您的數據屬性名稱,這將使其非常無用。 – meagar 2013-03-26 18:40:15

+0

什麼?這裏沒有缺失的功能,這聽起來像是在濫用它。如果你使用'data-ever-ever'或'data-what_ever',它會輸出你給它的任何東西。您發佈的任何「代碼」代碼都不是Slim無法處理的內容。 – meagar 2013-03-26 18:42:20

相關問題