【发布时间】:2019-01-22 19:30:16
【问题描述】:
我遇到了一个非常奇怪的问题。这是我的看法:
<h1>All Deals</h1>
<%= sanitize print_grouped_deals(@deals) %>
这是我的交易_helper.rb
def print_grouped_deals(grouped_deals_by_date)
grouped_deals_by_date.map do |(date, deals)|
%(<div id='#{date.to_s}-deals'>
<h3>#{brief_time date}</h3>
#{deal_paragraphs_for_group(deals)}</div>)
end.join
end
def deal_paragraphs_for_group(deals)
deals.map do |deal|
%(<p>#{"<span class='warning'>POSSIBLY EXPIRED! -</span>" if deal.probably_expired?} #{link_to deal.headline, deal}</p>)
end.join
end
值得注意的是第二个sn-p中第一个方法的第3行。我无法让它为我的 div 标签添加一个 id!如果我将<div id='#{date.to_s}-deals'> 更改为<div class='#{date.to_s}-deals'>,它会添加类没问题,但如果我将其保留为id=,那么它只会创建一个没有属性的简单<div> 标签。
为了避免我们认为它与生成具有 id 的多个 div 相关(尽管 id 会有所不同),我还尝试从帮助程序生成一个简单的<div id="thing" />,我得到了相同的空 div 标签结果。
WTF?
【问题讨论】:
-
如果同一日期有多个交易,则 ID 将重复,并且 HTML 规范规定 ID 应该是唯一的。也许 Rails 或 Chrome 或有人正在强制执行?
-
@DaveSlutzkin,我不认为这是正确的。
div为每个日期生成一次,因此它们应该保持唯一。 -
我当然不建议使用
content_tag或tag(rails 5 的助手)来构建这样的html。它将有助于可维护性,并应避免这些类型的错误 -
这似乎是真正属于部分而不是帮助者的东西。
标签: html css ruby-on-rails