我需要一些关于 jquery 的帮助,它应该完成我们的 Rails3 应用程序中的任务。感谢这里的其他人,我有一个复选框,单击该复选框后,应该将任务状态标记为已完成。
在我的 Rails 代码中,我有这个;
<%= check_box_tag 'complete_task_1', '', false, { 'href' => completed_task_path(task.id) } %>
在我的 application.js 中,我是这样开始的:
$('#complete_task_1').click(function() {
$.ajax({
url: $(this).data('href'),
type: 'post',
dataType: 'html',
success: function(data, textStatus, jqXHR) {
$('#thing').css("color","red");
alert ('yabadabadoo');
}
});
});
这给了我一个错误 - 没有与/tasks 匹配的路由
为了测试,我将网址替换为:
tasks/4/complete
这切换了数据库中的状态,但没有刷新页面。因此我有两个问题:
- 上面的网址/函数有什么问题?
- 我可以添加什么以使任务从页面消失而无需重新加载?
--更新--
尝试按照下面的 @darin-dimitrov 建议使用代码,但我从我的应用程序中注销...开发日志中显示的错误是:
Started POST "/tasks" for 127.0.0.1 at 2011-07-16 13:27:32 +0100
Processing by TasksController#create as HTML
SQL (143.6ms) describe `roles_users`
User Load (0.5ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
SQL (0.2ms) BEGIN
SQL (0.6ms) COMMIT
Completed in 454ms
看起来它仍然没有得到正确的网址。我也应该使用 POST 吗?
最佳答案
试试这个:
{ 'data-href' => completed_task_path(task.id) }
然后:
url: $(this).data('href')
应给出正确的网址(tasks/4/complete
)。
或者,如果您不使用 data-
前缀,您可以使用以下内容:
url: $(this).attr('href')
但由于 href
不是复选框上的有效属性,第一个解决方案似乎更好。
关于javascript - Jquery Ajax函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6717274/