javascript - Jquery AJAX 调用未找到 Rails 路线

标签 javascript jquery ruby-on-rails ruby ajax

我正在开发一个项目,需要能够标记某些对象以供检查或删除。我使用复选框,然后使用 JavaScript 从复选框获取数据。我正在尝试使用 AJAX 将该数据发送回 Rails Controller,但我不断收到 404 错误,并且我不确定我做错了什么.

这是 AJAX 调用(review_list 和 purge_list 均已定义,我已经检查过):

function callHandleSelected() {
...
  $.post('itemresults/handle_selected', { review: review_list, purge: purge_list },
      function(data) {
          alert(data);
      });
}

这是我为匹配它而编写的路线:

post 'itemresults/handle_selected', to: 'processed_item#handle_selected'

我尝试将 as: :ajax 添加到路由中,看看这是否会产生影响,但运气不佳。

调用 ajax 函数的 HTML 元素如下所示:

<button type="button" class="btn btn-normal" onclick="callHandleSelected()">Mark Selected as Reviewed and/or for Purge</button>

我的 Ruby Controller 中还有一个匹配的 handle_selected 方法。每次我尝试使用 AJAX 方法时,都会收到以下错误:

POST http://localhost:3000/itemresults/handle_selected 404 (Not Found) jquery.js?body=1:9667
  jQuery.ajaxTransport.send jquery.js?body=1:9667
  jQuery.extend.ajax jquery.js?body=1:9212
  jQuery.each.jQuery.(anonymous function) jquery.js?body=1:9358
  callHandleSelected processed_item.js?body=1:37
  onclick

如果您需要它,这里是 Controller 方法:

def handle_selected
  review_list = params[:review]
  purge_list = params[:purge]
  review_list.each do |item|
    item.split("_")
    proc_item = ProcessedItem.find(item[1])
    proc_item.reviewed = true;
    proc_item.save!
  end
  purge_list.each do |item|
    item.split("_")
    proc_item = ProcessedItem.find(item[1])
    proc_item.purge = true;
    proc_item.save!
  end
  redirect_to processed_items_path()
  #add alert
end

最佳答案

我认为问题在于您的请求网址需要一个前导斜杠:

$.post('itemresults/handle_selected' ...

应该是

$.post('/itemresults/handle_selected'

如果没有前导斜杠,它将把 url 添加到当前页面 url 的末尾。

编辑:您还应该在routes.rb 文件中的路径上放置一个前导斜杠。我认为rails“原谅”你不这样做,但我不确定:无论哪种方式,你都应该正确地做到这一点,即使用前导斜杠。

关于javascript - Jquery AJAX 调用未找到 Rails 路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24533002/

相关文章:

javascript - JavaScript 能否将 "invisible"发送给客户端?

php - Joomla 查询 - 从发布状态的内容中选择

javascript - 如何在等待响应时在网站中呈现加载页面

javascript - 单击时不呈现模态表单

ruby-on-rails - 如何在 Rails 3 中关闭 RSpec 2 的生成器?

ruby-on-rails - 永远不要响应 xhrs 渲染布局

javascript - 动态图像标签

javascript - href 和 onclick

c# - 是否有任何库可以将带有引用的 C# 对象转换为 dojox.json.ref 兼容的 JSON?

javascript - 如何使用hammer.js在手机和平​​板电脑中运行触摸滑动