【发布时间】:2013-11-29 20:22:59
【问题描述】:
我有一个具有简单布尔属性的 Rails 模型。当用户单击视图中的复选框时,我试图在后台更新该属性。我相信我已经正确配置了 AJAX 和控制器/路由器,但是当我按下按钮时,AJAX 帖子的错误功能会触发,而不是成功的功能。
我不确定从哪里开始,我无法从错误中提取任何有用的信息。
config/routes.db
...
post "/task_toggle" => "tasks#toggle", :as => "task_toggle"
...
tasks_controller 确实存在并且有一个方法切换。
这是正文末尾的 javascript。我正在使用 taskNumber 来获取需要切换的模型的 ID,并且我已经确认它确实是正确的。
JavaScript/AJAX
<script type="text/javascript">
$(document).on("click", ".check-task-btn", function() {
var taskNumber = $(this).parent().attr("id").substring(4);
$.ajax({
url: "/task_toggle",
type: "post",
data: {task_id: taskNumber},
dataType: "JSON",
success: function() {
window.alert("it worked");
},
error: function() {
window.alert("no");
}
});
});
</script>
当我按下一个标有check-task-btn 类的复选框时,我得到的消息没有打印出来。
这里是控制器,以防万一这里有什么值得注意的地方。
TasksController
def toggle
task = Task.find(params[:task_id])
task.finished = !task.finished
task.save
redirect_to root_path
end
有人知道我的 AJAX 失败的原因吗?
谢谢
编辑:所以我刚刚检查了一下,它实际上正在对数据库应用更改,但我仍然收到从错误中打印出来的警报。为什么会这样?
【问题讨论】:
标签: jquery ruby-on-rails ajax post web