【问题标题】:Rails is not rendering my HTML data attributes (RefineryCMS)Rails 没有呈现我的 HTML 数据属性 (RefineryCMS)
【发布时间】:2016-05-14 02:28:14
【问题描述】:

我有来自 RefineryCMS 的以下视图 refinery/portfolio/items/_item.html.erb 并且由于某种原因我的数据属性没有被呈现到 DOM 中。

据我了解,RefineryCMS 似乎可能会删除它们?

Rails 4.2.6 和 RefineryCMS 的最新主分支

这是我的 ERB 模板:

<li class="col-md-3 col-xs-6 thumb">
  <a class="thumbnail" data-toggle="tab" data-target="#tab_<%= dom_id(item) %>">
    <%= image_tag(item.image.url, {:title => item.title}) %>
  </a>
</li>

也试过了:

<li class="col-md-3 col-xs-6 thumb">
  <%= link_to "", class: "thumbnail", data: { toggle: "tab", target: "#tab_#{dom_id(item)}" } do %>
    <%= image_tag(item.image.url, {:title => item.title}) %>
  <% end %>
</li>

然后它将 HTML 呈现为:

<a class="thumbnail">
  <img title="title" src="/img.png" alt="alt_title">
</a>

【问题讨论】:

  • 是原始 HTML 输出还是来自检查器的 DOM?我高度怀疑炼油厂正在修改它——尤其是前一个示例,您直接打印到 ERB 模板。虽然可以在实际发送“缓冲区”之前对其进行操作,但由于它只是一个巨大的字符串,因此很少有一个好主意。
  • 另外,如果你想创建一个没有 URL 的A 标签,最好使用content_tag :a, class: "thumbnail", data: { toggle: "tab", target: "#tab_" + dom_id(item) } do

标签: ruby-on-rails ruby refinerycms refinery


【解决方案1】:

访问 RefineryCMS Gitter 聊天后,我获得了所需的帮助。问题是最近在 RefineryCMS 3 版本中他们开始清理 HTML 数据属性。

所以我在我的config/initializers/refinery/pages.rb 中添加了以下配置:

config.layout_template_whitelist = ["application"]
config.add_whitelist_elements = %w[ source track ]
config.add_whitelist_attributes = %w[ kind srclang placeholder controls data-target data-toggle ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多