IE дважды отображает цикл Rails — все остальные браузеры отображают один раз

#ruby-on-rails #ruby-on-rails-3 #internet-explorer

#ruby-on-rails #ruby-on-rails-3 #internet-explorer

Вопрос:

Вот простой цикл, написанный на .html.erb .

Для каждого portfolio_item мы создаем поле в сетке из 3 столбцов. Обратите внимание, что <div class="portfolioOptions"> это скрыто, но появляется onmouseover , покрывая <span id="title"> .

В IE 7, 8 и 9 для каждого @portfolio_item я получаю поле, за которым следует второе пустое поле!. Даже HTML-код IE отображает только одно окно.

 <div class="gridRow">
    <% @portfolio_items.each do |item| %>
    <%= link_to params.except(:controller,:action).merge(:controller=>"portfolio_items", :action=>"show", :id=>item.id) do %>
    <div class="boxHalf portfolioBox" id="<%= item.id %>">
        <div class="portfolioItem">
            <% if item.url.present? amp;amp; item.url_type == "vid" %>
              <%= item.vid_thumb.html_safe %>
            <% else %>
              <%= image_tag item.item.url(:medium) %>
            <% end %>
            <div class="text" title="<%= item.title %>">
                <span id="title_<%= item.id %>"><%= item.title %></span>
                <div class="portfolioOptions" id="option_<%= item.id %>">
                    <%= link_to 'Show', item, :class=>"blueButton" %>
                    <%= link_to 'Edit', edit_portfolio_item_path(item, :source=>"index"), :class=>"blueButton" %>
                    <%= link_to 'Delete', item, :confirm => 'Are you sure?', :method => :delete, :class=>"blueButton" %>
                </div>
            </div>
        </div>
    </div>
    <% end %>
    <% end %>
</div>
  

Относительно незначительная дополнительная проблема — portfolioOptions наведение курсора мыши не отображается в IE, но я оставлю это как подчиненное по отношению к проблеме двойного блока.

Комментарии:

1. Не могли бы вы попытаться свести этот пример к чему-то, что было бы легче воспроизвести и понять?

Ответ №1:

Попробуйте проверить HTML, который получается в результате этого. Вы помещаете div внутрь link_to , и он сам содержит ссылки. Это допустимый html? Насколько я знаю, <a> элемент не может содержать элемент уровня блока или другой <a> снова.

Не уверен, как это должно себя вести.

Комментарии:

1. Я не знаю, какой механизм IE использовал для отображения этих полей дважды, но удаления этого охватывающего <a> тега было достаточно, чтобы предотвратить повторение этого. Спасибо!