Вот мой код:
<div class = "panel-group" id = "accordion">
<% @workspace_tasks.each do |t, a| %>
<div class = "panel panel-default">
<div class = "panel-heading">
<h4 class = "panel-title">
<a data-toggle = "collapse" data-parent = "#accordion" href = "#collapse<%= t.to_s %>">
<%= t %>
</a>
</h4>
</div>
<div id = "collapse<%= t.to_s %>" class = "panel-collapse">
<div class = "panel-body">
<table class = "table table-striped">
</table>
</div>
</div>
</div>
<% end %>
</div>
Как видите, я устанавливаю идентификатор панели в соответствии с ключом хэша, который я просматриваю в цикле.
Информация отображается правильно, однако, если я настроил панель по умолчанию на раскрытие, я не смогу ее свернуть. Верно и обратное, когда я не могу развернуть панель, если по умолчанию настроен на свернутую.
Я использую идентичный код в другом месте своего приложения, но с другой моделью, используемой для создания хэша в контроллере. Я нахожу такое поведение очень странным.
Я не уверен, что это мой код? Или что-то с Bootstrap?
Да, там есть место. Это проблемно? Это все внутри "", поэтому я подумал, что места подойдут.
Спецификация HTML5 указывает, что id не может содержать пробелов:
When specified on HTML elements, the id attribute value must be unique amongst all the IDs in the element’s tree and must contain at least one character. The value must not contain any space characters.
Вам необходимо подготовить переменную t
как действительный идентификатор, например заменив пробелы на -
:
t.to_s.gsub(/\s/, '-')
t.to_s.parameterize
В чем ценность
t
? Есть ли в нем пробелы?