我正在尝试在<%=%>中使用插入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'出现在其余的网址中。
任何线索如何克服这个?
答案 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”替换为其值。
但我仍然希望有一个更优雅的解决方案。