Ruby on rails:在<%=%>中使用javascript变量Html.erb中的标签

时间:2011-05-09 18:24:36

标签: javascript ruby-on-rails erb

我正在尝试在<%=%>中使用插入Javascript变量标签,但它打印变量名称verbose。这是我的代码

<script>
     function getGraph(agency,device_id)
      {
            var i = document.createElement('img'); 
            i.src = '<%= show_graph_hcfcd_url('device_id') %>'; 
            $(graphDiv).appendChild(i); 
      }
</script>

现在问题是网址生成得很好,除了而不是device_id的值,'device_id'出现在其余的网址中。

任何线索如何克服这个?

2 个答案:

答案 0 :(得分:9)

<%= %>将解释服务器上的代码

和javascript变量可在客户端上更改。这样做

<%= show_graph_hcfcd_url('device_id') %>

可能不是这样做的正确方法。

您可能想尝试将url(s)放在元素的数据中:

<div id="device_id" data-url="<%= show_graph_hcfcd_url(@device.id) %>">...</div>

<script>
     function getGraph(agency,device_id)
      {
            var i = document.createElement('img'); 
            i.src = $(device_id).data("url"); 
            $(graphDiv).appendChild(i); 
      }
</script>

另见

http://railscasts.com/episodes/324-passing-data-to-javascript

这是一个很好的宝石,称为“gon”

答案 1 :(得分:2)

以下是我现在解决这个问题的方法:

<script>
     function getGraph(agency,device_id)
      {

            var i = document.createElement('img'); 
            var url = '<%= show_graph_hcfcd_url('device_id') %>'; //new change
            url = url.replace('device_id',""+(device_id*1000));   //new change
            i.src = url;
            $(graphDiv).innerHTML = "";
            $(graphDiv).appendChild(i); 
      }
  </script>

粗体中的线条显示了我的所作所为。基本上将url中的“device_id”替换为其值。

但我仍然希望有一个更优雅的解决方案。