RubyonRails:在<;%%=%中使用javascript变量&燃气轮机;Html.erb中的标记
我试图在标记中插入一个Javascript变量,但它会详细打印变量名。这是我的密码RubyonRails:在<;%%=%中使用javascript变量&燃气轮机;Html.erb中的标记,javascript,ruby-on-rails,erb,Javascript,Ruby On Rails,Erb,我试图在标记中插入一个Javascript变量,但它会详细打印变量名。这是我的密码 <script> function getGraph(agency,device_id) { var i = document.createElement('img'); i.src = '<%= show_graph_hcfcd_url('device_id') %>'; $(graphDi
<script>
function getGraph(agency,device_id)
{
var i = document.createElement('img');
i.src = '<%= show_graph_hcfcd_url('device_id') %>';
$(graphDiv).appendChild(i);
}
</script>
函数getGraph(代理、设备\u id)
{
var i=document.createElement('img');
i、 src='';
$(图四)附加物(一);
}
现在的问题是URL生成得很好,除了在rest URL中出现“device\u id”而不是device\u id的值之外
有什么线索可以克服这个问题吗 以下是我目前解决这个问题的方法:
<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>
函数getGraph(代理、设备\u id)
{
var i=document.createElement('img');
var url='';//新更改
url=url.replace('device_id',“”+(device_id*1000));//新更改
i、 src=url;
$(graphDiv.innerHTML=“”;
$(图四)附加物(一);
}
粗体的线条显示了我所做的。基本上用它的值替换了url中的“设备id”
但我仍然希望有一个更优雅的解决方案。
将解释服务器上的代码
并且javascript变量可在客户端上更改。这样做
<%= show_graph_hcfcd_url('device_id') %>
这可能不是正确的方法
您可能希望尝试将url放在元素的数据属性中:
<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>
。。。
函数getGraph(代理、设备\u id)
{
var i=document.createElement('img');
i、 src=$(设备id).data(“url”);
$(图四)附加物(一);
}
也看到
有一个很好的gem可以做到这一点,叫做“gon”你能显示show\u graph\u hcfcd\u url的源代码吗?删除引号。如果它是一个字符串变量,您就不会用引号括起来。@Bryan Drewery:show_graph_hcfcd_url的代码是正确的,它可以工作。我已经分别测试了url。问题是生成正确的url。@Faresh:如果我删除这些引号,它会认为设备id是ruby变量,这是错误的。通过加引号,它将设备id详细地放在url中。现在,我正在使用javascript中的replace()函数将其替换为variable。我指的是围绕
的引号,我认为没有一个优雅的解决方案来解决这个问题。我的解决方案是用根url替换实际url,并附加路径和参数:var url=“graph\u hcfcd/”+device\u id代码>