2

我有一种情况,我需要在 div 上动态设置“data-*”的值。我实际使用的代码是这个:

  = 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

4

1 回答 1

6

您可以使用content_tag代替tag来生成 a<div></div>而不是 a <div>,但您不应该这样做。

您正在使用Slim,因此请使用 Slim

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

输出:

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

Slim 和 HAML 的全部意义在于,您可以使用这种非常简洁的语法来编写标签。您应该使用它,而不是在不需要时求助于 Rails 的标签助手。通过使用它们,您将重新引入它们应该删除的所有标点符号混乱。

于 2013-03-26T18:34:54.387 回答