奇怪的jquery帖子问题,使用了错误的帖子网址

时间:2009-11-25 10:21:51

标签: ruby-on-rails jquery

我有一个表单我希望通过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

我不能为我的生活弄清楚为什么会这样。

3 个答案:

答案 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