0

我对 Rails 和 Haml 还很陌生。我试图在我的视图中有一个按钮,它包含一个“key”参数,它将传递相同的参数并使用带有 Ajax 的 jQuery 在控制器中触发一个方法。

一切都可以在我的其他班级的幕后完成(这是一个 POST REST 请求),除了成功消息之外我不需要查看任何内容。key: parameter我已经调试了所有变量和路由,但是,由于某种原因,Ajax 没有捕捉到。它一直在说undefined。我尝试key在控制器方法中对参数进行硬编码,其他所有内容都已确认正常工作,但只是缺少参数。

在我看来,我有这一行:

%button#start{ key: @start_key }= start

在我的 process.js 文件中:

$(document).ready(function(){
    $('button#start').on('click', function(){
        var start_key = $('button#start').attr('key');   <------------
         $.ajax({
            url: '/process/start_process',
            data: start_key
         })
         $('#started_msg').text('started !!!');
     });
});

在我的 controller.rb 中,我有这个方法:

def start_process
    Client.start_process(params[:key])
End

我不确定这是否是正确的方法。请随时给我一些意见或是否需要其他信息。

4

1 回答 1

0

您缺少一些内容,请参阅内联注释。

$(document).ready(function(){
    $('button#start').on('click', function(){
        var start_key = $('button#start').attr('key');
         $.ajax({
            url: '/process/start_process',
            method: 'POST', // <-- POST instead of GET
            data: { // <-- POST an object instead of just the value
                key: start_key // <-- named param
            }
         })
         $('#started_msg').text('started !!!');
     });
});

在您刚刚发送回“bare”键之前,params 数组看起来像这样:

{"my-key-value"=>nil}

现在您将一个对象发布回 rails 应用程序,params 哈希应该包含键“key”和正确的值,例如:

{key: "my-key-value"}

如果您查看您的 Rails 服务器请求日志,您应该能够看到差异。它列出了请求参数(至少 rails 4 有,我认为 rails 3 也有)。

于 2013-11-06T03:55:42.047 回答