2015-10-15 89 views
1

我想创建一个链接,将通过一些变量到另一个页面,问题是我需要通过JavaScript来做到这一点。下面是我的javascript变量:如何在脚本中的link_to标记内使用javascript变量?

data.forEach(function(i) { 

    var html = '<div><%= link_to "", "/campaigns/new", :method => :get, area: i.id %></div>'; 
}); 

发生在这里的是,i.id,因为它认为i是红宝石变量抛出一个语法错误的问题。

我该如何告诉它使用i作为javascript变量?

+0

什么?你想在后面执行的JavaScript中使用ruby代码? –

+0

您需要记住,您的rails代码在服务器上运行,并生成一堆文本,稍后在用户的浏览器中显示(并在javascript中执行)。所以,你可以使用你的rails代码来创建一些javascript,但rails代码不会在javascript运行时出现:只是你生成的任何javascript和html。 –

+0

在这种情况下,“我”是什么?数据是一个JavaScript变量吗? –

回答

3

下面的ruby代码甚至在执行JavaScript之前执行。

<%= link_to "", "/campaigns/new", :method => :get, area: i.id %> 

所以你不能Ruby和JavaScript之间的喜欢你如何给你的i.id混合。

JavaScript解决方案:

data.forEach(function(i) { 
    var html = '<div><a href="/campaigns/new?area=' + i.id + '"></a></div>'; 
}); 
+1

嗯..我想我将不得不使用url参数来解决这个问题。或者有没有使用本地存储的某种解决方法? – Chrillewoodz

+0

@Chrillewoodz最好使用'localStorage'。你有解决方案吗,还是你想让我为你编码? –

+0

从来没有必要使用它,所以如果你想你可以发布解决方案,我会接受答案。 – Chrillewoodz

0

要严格回答你的问题,你可以这样做:

data.forEach(function(i) { 
    var html = '<div><a href="/campaigns/new" area="' + i.id + '"></a></div>'; 
}); 

但通常是在你的元素数据属性这是一个更好的做法来存储数据,并通过类似element.data("area")的调用,在您的JS代码中检索它们。

相关问题