0

我正在使用 js-routes 作为我的 ruby​​ on rails 项目的一部分,并且我正在尝试根据github 页面实现默认的 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。这是错的吗?

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

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

下面是触发此操作的 js-routes 的示例用法;

window.location.href=Routes.purchases_path

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

我在这里想念什么?

4

1 回答 1

0

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

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

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

于 2016-11-27T23:46:15.260 回答