从另一个脚本替换Rails中的脚本中的值

时间:2010-11-02 05:02:23

标签: javascript jquery ruby-on-rails

我在show.html.erb

的中间有这个
<script type="text/javascript">
  $(document).ready(function(){
  $("#map<%= shop.id %>").gMap({ markers: [{ latitude: <%= shop.lat %>,
   longitude: <%= shop.lng %>,
   html: "<%=h shop.name %><br/><a href='http://maps.google.com/maps?q=<%=h shop.address_geo %>' target='_blank'>See Full Map</a>" },
  ],
  zoom: 16 });
</script>

然后在它的底部,我想做这样的事情:

function append_place(type) {
      var shop_id = id;
      $("shop_id").append(shop_id);
    }

我希望id替换为<%= shop.id %>。我知道这两个脚本在编码时都是错误的,但我该如何实现呢?不能使用Rails cos这是客户端和JSON。它首先从数据库中提取id,然后通过内联脚本附加它。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以将该变量转储到任意数量的位置,但为了保持全局命名空间的清洁,您可以在jquery对象中创建一个myPageVars对象,例如:

<script type="text/javascript">

  $.myPageVars = $.myPageVars || {}; // don't want to overwrite any previously written vars
  $.myPageVars.shop_id = "<%= shop.id %>"

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

你的追加功能如下:

function append_place(type) {
  var shop_id = $.myPageVars.shop_id || false;
  if (shop_id) $("#map"+shop_id).append(whatever);
}

对不起,如果我误解了你的问题,我不是铁路用户。