如何设置一个等于javascript变量的rails变量?

时间:2011-07-26 19:36:32

标签: ruby-on-rails variables javascript-events

我想做类似于How to pass a Javascript variable to Rails Controller?的事情,但我似乎无法让它为我的目的而工作。我正在使用拖放jQuery将“项目”转移到“pods”。这是我的代码:

function onReceive(id,pod_id){
var id = id;
var pod_id = pod_id;
confirm("Add " +id + " to " + pod_id + "?");
}

我想做的事情是这样的:

function onReceive(id,pod_id){
<% @pod_id = pod_id %>
<% @id = id %>
}

但我知道解决方案并不那么容易。如何将id和pod_id传递给我的控制器?理想情况下,我想将其传递给更新操作。 P.S。:我根本不认识AJAX,所以如果这是唯一的方式,请提供详细信息......

1 个答案:

答案 0 :(得分:7)

将数据从浏览器客户端传递到rails应用程序的唯一方法是通过HTTP。要在JavaScript中执行HTTP,您可以使用XHR(也称为AJAX)。您不能像在代码示例中建议的那样在模板中执行此操作,因为模板由服务器上的Rails呈现,并在客户端上作为HTML和JavaScript进行评估。客户端/浏览器和服务器之间没有内联通信。

假设jQuery:

function onReceive(id,pod_id){
    $.ajax({
        url: "/some/url",
        data: {pod_id: pod_id, id: id} 
    });
}

然后,您需要设置一个控制器来响应/ some / url,并对params[:pod_id]params[:id]执行任何操作。