无法在Rails帮助器中向div标签动态添加ID

时间:2019-01-22 19:30:16

标签: html css ruby-on-rails

我有一个很奇怪的问题。这是我的观点:

<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?

1 个答案:

答案 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']