我没有太多使用Ajax的经验,除了在带有get和post请求的rails应用程序上的几个镜头,但是我对如何使用PUT发出ajax请求有一些严重的问题方法。特别是我在通过ajax将Rail的@variables传递给控制器时遇到了问题。
我在下面有以下视图代码:
- if logged_in? && @account.stacks.count > 0
- @account.stacks.each do |stack|
- haml_tag :div, stack.title
= check_box_tag 'stacked', 0, false, { stack: stack.id, project: @project.id }
这会创建如下图所示的html标签:
这是我的.js代码:
$(document).ready(function() {
// Grab the checked value 0 for unchecked, 1 for checked
var check_value = $("input[name='stacked']").val();
$("input[name='stacked']").click(function() {
if (check_value == 0) {
//grab the id of my stack object
var stack_id = $("input[name='stacked']").attr("stack");
//change the unchecked value to checked
check_value = 1;
//Make a request to the controller
// url = '/stacks/12345'
$.ajax("/stacks/" + stack_id,{
type: "PUT"
dataType: ?
//success: This function will change an html element on the modal
});
} else {
// code code code
}
});
});
当我尝试发送此请求以查看它是否有效时。我收到了这个错误。
Started PUT "/stacks/undefined" for ::1 at 2015-06-02 15:12:28 -0400
Processing by StacksController#update as */*
Parameters: {"id"=>"undefined"}
为什么url堆栈/未定义?我console.logged url并返回正确的字符串?我还尝试传入rails指南中指定的数据属性,但这似乎也不起作用。
= check_box_tag 'stacked', 0, false, { "data-stack" => stack.id, "data-project" => @project.id }
var stack_id = $("input[name='stacked']").data("stack");
网址往往会像/stacks/<#Object>
一样结束。这也不对。有人可以帮助确定我做错了吗?