gpt4 book ai didi

backbone.js - 如何在单个页面应用程序中处理非根URL?

转载 作者:行者123 更新时间:2023-12-04 13:20:24 25 4
gpt4 key购买 nike

我尝试使用带有pushState选项的Rails 3.2和Backbone.js制作一个单页应用程序,但遇到一些我不理解的问题。

如果加载应用程序(/)的根URL,一切正常:Rails返回带有JS的HTML布局,该布局引导Backbone,后者为JSON实体制作了一些XHR并呈现了内容。

但是,如果我从非根URL开始使用应用程序(例如,通过在浏览器的地址栏中手动键入应用程序),那么Rails会尝试使用其来自route.rb的路由规则来处理此请求-这是错误的,因为这是“主干网”的路由。在这种情况下,如何加载页面并引导Backbone处理该URL?

最佳答案

终于我找到了解决方案。

我将以下代码放入我的routes.rb

class XHRConstraint
def matches?(request)
!request.xhr? && !(request.url =~ /\.json$/ && ::Rails.env == 'development')
end
end

match '(*url)' => 'home#index', :constraints => XHRConstraint.new

使用此匹配器,所有非XHR请求都将路由到HomeController,该HomeController返回HTML页面。 XHR请求将由其他返回JSON响应的 Controller 处理。
另外,我在开发环境中还保留了以“.json”结尾的请求,以进行调试。

关于backbone.js - 如何在单个页面应用程序中处理非根URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12082643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com