我有一个表单我希望通过ajax提交jQuery $ .post命令。
表格如下:
<form action="/wine/merlot/reviews" class="new_review" id="new_review" method="post">
jquery调用是:
$(document).ready(function() {
$('#new_review').submit(function() {
$.post($(this).attr('action'), $(this).serialize(), null, 'script');
return false;
});
});
我在服务器上收到以下错误:
ActionController :: MethodNotAllowed(仅允许获取,放置和删除请求。):
通过挖掘firebugs控制台我可以看出问题是帖子发布到这个网址:
/ wine / merlot代替/ wine / merlot / reviews
我不能为我的生活弄清楚为什么会这样。
答案 0 :(得分:1)
行。事实证明我是个白痴。我在页面上有另一个id为“new_review”的div,所以我猜它正在查看错误的元素。重命名,现在一切正常。
答案 1 :(得分:1)
我无法使用带有Rails 2的jQuery $ .post命令通过ajax提交表单。
我修改了Ryan Bates的Railcast 136以通过put来提交。我使用的kludge是在更新操作中检查(params [:id] =='update')以检查此ajax请求。
插曲-136 /存储/公共/ Javascript角/ application.js中
jQuery.fn.blurWithAjax = function() {
this.blur(function() {
// GOOD .ajax javascript update action works even though create on Rails2 does not
jQuery.ajax({
type: "PUT",
url: "/reviews/update",
data: jQuery(this).serialize(),
dataType: "script",
callback: null
});
return false;
})
return this;
};
jQuery(document).ready(function() {
jQuery("#review_content").blurWithAjax();
});
您还需要进行并行更改;
def create =&gt; def update
app / views / reviews / create.js.erb =&gt;应用程序/视图/评论/ update.js.erb
答案 2 :(得分:0)
不确定,但请尝试/wine/merlot/reviews/
而不是/wine/merlot/reviews
?