2 Stimmen

Der Aufruf von "Array.delete" in einer Hilfsfunktion in einer Schleife führt dazu, dass das Array jedes Mal geändert wird?

Ich habe dieses sehr seltsame Problem heute Abend, wenn ich so etwas wie "Filter-Posts-by-multiple-tags"-Funktion war Gebäude.

In der Ansichtsvorlage:

<%
tags = Tag.all
selected_tags ||= nil
%>

<ul>
    <% tags.each do |tag| %>
    <% logger.info("selected_tags size:"+ selected_tags.size.inspect) %>
    <li><%= link_or_span(tag, selected_tags) %></li>
    <% end %>
</ul>

Im TagsHelper:

module TagsHelper
  def link_or_span(tag, selected_tags)
    selected_tags.delete(tag)
    link_to tag.title, tag
  end
end

Er gibt (im Protokoll) aus:

ausgewählte_tags Größe:2
ausgewählte_tags Größe:1
ausgewählte_tags Größe:0

Was ich erwarte:

ausgewählte_tags Größe:2
ausgewählte_tags Größe:2
ausgewählte_tags Größe:2

Ich denke, var "selected_tags" in der Ansichtsvorlage sollte jedes Mal in der Schleife unangetastet bleiben, da sie sich in einem anderen Bereich befindet, nicht wahr?

Die ENV:

  • ruby 1.9.2p180 (2011-02-18 Revision 30909) [x86_64-linux]
  • Rails 3.1.0.rc4

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X