2010-11-26 5 views
0

Versuchen, map_blue_1.png, map_blue_2.png usw. mit dem folgenden Code zu generieren, aber einige Codierungsfehler auf der {i+1}. Was ist der richtige Weg?i + 1 in Rails-Hash-Code?

<% content_for :in_script do %> 
    $("#map").gMap({ 
     markers: [ 
        <% @spots.each_with_index do |spot, i| %> 
        <% if spot.geocoded? %> 
        { 
         latitude: <%= spot.lat %>, 
         longitude: <%= spot.lng %>, 
         html: "<a href='#item_<%= i + 1 %>'><strong><%=h spot.name %></strong></a>", 
         icon: { image: "<%= APP_CONFIG[:site_url] + '/images/map_blue_' + {i+1} + '.png' %>", 
           iconsize: [48, 48], 
           iconanchor: [24,48], 
           infowindowanchor: [24, 0] } 
        }, 
        <% end %> 
        <% end %> 
       ], 
     zoom: 12 }); 
<% end %> 

Antwort

2

APP_CONFIG[:site_url] + '/images/map_blue_' + (i+1).to_s + '.png'

oder

"#{APP_CONFIG[:site_url]}/images/map_blue_#{i+1}.png"

+0

Die früheren Werke. Vielen Dank. – Victor

+0

Für das, was es wert ist, wird der zweite Ansatz, dh die Verwendung der Abschnitte # {}, als Best Practice angesehen, da es robuster ist, da es immer alles automatisch in Strings konvertiert. Wenn Sie routinemäßig die erste Methode verwenden, Strings zusammenzufügen, werden Sie vergessen, to_s irgendwann zu verwenden, und es wird in die Luft gehen, wenn es versucht, einer Zeichenfolge eine Zahl oder Null hinzuzufügen. –

+0

stimme zu, ich würde lieber die zweite verwenden. Danke, Max – jordinl

Verwandte Themen