在rails中对控制器操作进行ajax调用

Posted

技术标签:

【中文标题】在rails中对控制器操作进行ajax调用【英文标题】:making an ajax call to controller action in rails 【发布时间】:2013-06-25 00:10:37 【问题描述】:

我正在尝试对我的控制器进行 ajax 调用

class PatientRecordController < ApplicationController
  def export
     ....
  end
end

在我的 javascript 文件中

$(document).ready(function()
    freezeTopRow($('#dataTable'));
    $("#export").click(function()
        $.ajax(url: "patient_record/export", type: "POST");
    );
);

当我检查元素和调试以及单击页面上的导出标记时。我点击了该功能,但它永远不会到达控制器

我还有 2 个控制器和 2 个视图。在我的另一个控制器和视图中,我做同样的事情并且它有效

【问题讨论】:

【参考方案1】:

你有没有检查过你routes.rb有类似的东西:

post 'patient_record/export'

也许 Rails 不知道路由,所以 ajax 不起作用(如果您可以从浏览器执行操作,则意味着您只有一个 GET 集,您可以检查更改ajax 调用中的请求)

【讨论】:

【参考方案2】:

您还需要在config/routes.rb 文件中为export 操作提供路由,例如

resources :patient_records do
  member do
    post :export
  end
end

您可以通过运行rake routes | grep 'export' 来检查它是否已经存在。

【讨论】:

...我正要对您的回答发表类似的评论。 :)

以上是关于在rails中对控制器操作进行ajax调用的主要内容,如果未能解决你的问题,请参考以下文章

在asp.net mvc中对控制器进行简单的Ajax调用

Rails ajax 调用同时产生 404 和 500 错误

如何为 Rails 控制器添加延迟以进行测试?

从局部视图中对控制器的 AJAX 调用

rails 控制器未收到 Ajax 调用

Rails 控制器方法在 Ajax 调用后不重新加载页面