2010-10-31 7 views
0

Le bloc de script commence par $('#map#{shop.id}')..... dans content_for :in_script ne fonctionne pas.Le bloc de script dans content_for: in_script ne fonctionne pas

def edit_country_fields_template(city, shop) 
    content_tag(:div, :class => "item") do 
    "<div id='map#{shop.id}' class='map'></div>".html_safe + 
    if shop.geocoded? 
     content_for :in_script do 
      $('#map#{shop.id}').gMap({ markers: [{ latitude: #{spot.lat}, 
    longitude: #{shop.lng}, 
    html: '_latlng' }, 
    { address: '#{shop.address_geo}', 
     html: '#{shop.name}<br/><a href='http://maps.google.com/maps?q=#{shop.address_geo}' target='_blank'>See Full Map</a>' }, 
     ], 
     zoom: 16 }); 
      end 
     end 
    end 
end 

J'ai cette aide a appelé à mon avis edit.html.erb avec <%= edit_country_fields_template %>. Mais j'ai un problème avec le code de script ci-dessous ajouté en ligne dans le script du fichier de vue:

$('#map#{shop.id}').gMap({ markers: [{ latitude: #{spot.lat}, 
    longitude: #{shop.lng}, 
    html: '_latlng' }, 
    { address: '#{shop.address_geo}', 
     html: '#{shop.name}<br/><a href='http://maps.google.com/maps?q=#{shop.address_geo}' target='_blank'>See Full Map</a>' }, 
     ], 
     zoom: 16 }); 

Le résultat final est if shop.geocoded est true, au-dessus du code de script sera affiché à mon avis en tant que script en ligne:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#map1').gMap({ markers: [{ latitude: -1.030503, 
    longitude: 1.340594, 
    html: '_latlng' }, 
    { address: '200 Good Street, California, United States of America', 
     html: 'California Restaurant<br/><a href='http://maps.google.com/maps?q=200 Good Street, California, United States of America' target='_blank'>See Full Map</a>' }, 
     ], 
     zoom: 16 }); 
    }); 

Merci.

+0

et ce que vous voulez vraiment? Nous ne pouvons pas corriger le code sans savoir ce qu'il en est – shingara

+0

Désolé, j'ai modifié le message et l'ai rendu plus clair. – Victor

+0

Il n'est toujours pas clair ce que vous voulez, car il n'y a pas de question dans votre message. – monocle

Répondre

0

content_for ne génère rien, mais stocke le code HTML dans un tampon pour une utilisation dans d'autres endroits (comme l'en-tête ou le pied de page de votre page).

À votre avis ou partielle:

content_for :my_script do 
    "abc" 
end 

Ensuite, dans votre mise en page:

yield :my_script 

Sans yield, votre content_for ne sera pas affiché.

Questions connexes