Блок скриптов в content_for: in_script не работает - PullRequest
0 голосов
/ 31 октября 2010

Блок скриптов начинается с $('#map#{shop.id}')..... в content_for :in_script, не работает.

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

На мой взгляд, этот помощник называется edit.html.erb с <%= edit_country_fields_template %>. Но у меня возникла проблема с добавлением приведенного ниже кода сценария в сценарий файла представления:

$('#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 });

Конечный результат - if shop.geocoded - true, приведенный выше код скрипта будет отображаться на моем экране в виде встроенного скрипта:

<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 });
    });

Спасибо.

1 Ответ

0 голосов
/ 31 октября 2010

content_for ничего не выводит, но сохраняет HTML в буфере для использования в других местах (например, верхний или нижний колонтитул вашей страницы).

По вашему мнению или частично:

content_for :my_script do
  "abc"
end

Тогда в вашем макете:

yield :my_script

Без yield ваш content_for не будет отображаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...