js-routes 默认 url 选项设置但仍然抛出 404

js-routes default url options set but still throwing 404

我在 rails 项目中使用 js-routes 作为我的 ruby 的一部分,我正在尝试根据 github page. I 实现默认的 url 选项已经在我的 configu/initializers 文件夹中创建了 "jsroutes.rb" 文件,但是,当我从我添加的 rails routes.rb 文件中删除 :format => false 以获取 js-routes为了工作,我开始再次收到缺少格式的 404。

我已尝试以下操作并确认它们正在通过服务器启动时的 puts 语句加载:

JsRoutes.setup do |config|
  default_url_options = {format: :json}
end

JsRoutes.setup do |config|
  default_url_options = {:format => 'json'}
end

以及其他一些结果相同的变体。

我的理解是,如果我设置这个选项,任何通过 js-routes 发出的请求都应该自动附加格式为 JSON。这有错吗?

吐出的错误是与缺少格式相关的一般 rails 404,例如:

ActionController::RoutingError (No route matches [POST] "/purchases(.:format)")

下面是将触发此事件的 js-routes 用法示例;

window.location.href=Routes.purchases_path

我也一直在通过 "rake tmp:cache:clear" 刷​​新缓存以确保每次启动服务器时都会重新生成 js-routes 文件。

我在这里错过了什么?

所以这是一个有趣的错误。这是因为即使我将 URL 选项和内容类型设置为 'application/json',我还是将对象传递给了 AJAX 调用。

一旦我将 AJAX 调用的数据组件更改为序列化为 JSON 的对象,调用就会成功。

我错误地假设将内容类型和对象传递给 AJAX 调用会自动将该对象序列化为 JSON。