我有一个很奇怪的问题。这是我的观点:
<select name="role" id="role">
<option value="lessee">Lessee</option>
<option selected="selected" value="subscriber">Subscriber</option>
<option value="contributor">Contributor</option>
<option value="author">Author</option>
<option value="editor">Editor</option>
<option value="administrator">Administrator</option>
</select>
这是我的Deals_helper.rb
<h1>All Deals</h1>
<%= sanitize print_grouped_deals(@deals) %>
值得注意的是第二个片段中第一个方法的第三行。我无法将其添加ID到div标签中!如果将 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
更改为<div id='#{date.to_s}-deals'>
,则不会增加该类的问题,但是如果我将其保留为<div class='#{date.to_s}-deals'>
,则它将仅创建一个没有属性的简单id=
标记。
以免我们想像这与生成带有id的多个div有关(尽管id会有所不同),我还尝试了从帮助程序生成一个简单的<div>
,并且得到了相同的空div标签结果。
WTF?
答案 0 :(得分:1)
您必须将属性白名单传递给清理助手https://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-sanitize
允许id属性
<%= sanitize print_grouped_deals, attributes: %w(id) %>
要在整个应用程序中设置默认的允许标签或属性
# In config/application.rb
config.action_view.sanitized_allowed_tags = ['div', 'h3']
config.action_view.sanitized_allowed_attributes = ['id', 'class']