首页 > 解决方案 > 确保正确处理由 javascript 调用的 rails 操作中的响应

问题描述

以下 javascript 片段将数据提交到 Rails 控制器操作

Rails.ajax({
  url: "section_update",
  type: "post",
  data: formData
});

但是,日志指出

Started POST "/articles/section_update" for 176.200.200.92 at 2020-07-27 18:07:20 +0200
Processing by ArticlesController#section_update as */*

如何修改 javascript 以便将操作作为 JS 处理 - 或强制操作仅通过js.erb约定响应?

标签: javascriptruby-on-rails

解决方案


在控制器中显式添加一个respond_to块。

respond_to do |format|
  format.js { redirect_to some_path} #If you need to redirect
  format.js                          #If you want to render a js.erb view matching the action.
end

“Rails 方式”将删除这段 JS 代码,然后添加remote: true到处理 formData 的链接或表单中。这告诉 Rails 以 JS 的形式自动提交请求。


推荐阅读