将ruby字符串或整数或float转换为javascript或jquery

时间:2013-04-22 19:16:14

标签: javascript jquery ruby-on-rails string integer

在我的rails项目中,我在Google地图中的一些代码是:

function initialize_google_maps() {
    var currentlatlng = new google.maps.LatLng(<%= @user.lat %>, <%= @user.lng %>);
    var zoom = <%= @kms_range %> > 9 ? 9 : 10;
    var myOptions = {
        zoom: zoom,

等等...

问题是那些:

(<%= @user.lat %>, <%= @user.lng %>);

我如何转换&lt;%= @ user.lat%&gt;和&lt;%= @ user.lng%&gt;变成一个字符串,所以javascript或jquery可以理解吗?

出于ajax的原因,我不能将此代码放在脚本标记之间。我需要将它变成一个jquery函数,分配值&lt;%= @ user.lat%&gt;和&lt;%= @ user.lng%&gt;进入jquery可以理解的东西。

<script type="text/javascript">
  var map;
  var markers = [];

  function initialize_google_maps() {
    var currentlatlng = new google.maps.LatLng(<%= @user.lat %>, <%= @user.lng %>);
    var zoom = <%= @kms_range %> > 9 ? 9 : 10;
    var myOptions = {
        zoom: zoom,
        center: currentlatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP, // ROADMAP, SATELLITE, HYBRID
        streetViewControl: false
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var marker = new google.maps.Marker({map: map, position: currentlatlng, icon:{oppacity:0}});
    map.setCenter(currentlatlng);
    map.setZoom(zoom);

    var circle = new google.maps.Circle({
        map: map,
        fillOpacity: 0,
        strokeWeight: 2,
        strokeOpacity: 0.7,
        radius: <%= @kms_range %>*1000,
    });
    circle.bindTo('center', marker, 'position');

  }

  function show_markers() {
    if (markers)
      for(i in markers) {
        markers[i].setMap(map);
      }
  }

  function add_marker(location) {
    marker = new google.maps.Marker({
      position: location,
      map: map
    });
    markers.push(marker);
    // markers.setVisible(false);
  }

  function initialize_markers() {
    <% (@reviews || []).each do |r| %>
      <% next unless r.lat && r.lng %>
      position = new google.maps.LatLng(<%= r.lat %>, <%= r.lng %>);
      add_marker(position);
    <% end %>
  }

  $(function() {
    initialize_google_maps();
    initialize_markers();
    show_markers();
  });

</script>

1 个答案:

答案 0 :(得分:1)

如果它们是double或int,你不需要,你可以只是逐字渲染它们。如果它确实是一个字符串,你需要一个js中的字符串,只需在其中加上引号:

var currentlatlng = new google.maps.LatLng("<%= @user.lat %>", "<%= @user.lng %>");

编辑:根据评论:

var map_latitude = <%= at_user.lat %>;
var map_longitude = <%= at_user.lng %>;