fey*_*fey 6 routing singlepage backbone.js ruby-on-rails-3.2
我尝试使用带有pushState选项的Rails 3.2和Backbone.js制作单页应用程序,但遇到了一些我不理解的东西.
如果我加载应用程序的根URL(/),一切顺利:Rails返回一个带有JS的HTML布局,它引导Backbone,它为JSON实体制作一些XHR并呈现内容.
但是如果我从非root URL开始使用app (例如通过在浏览器的地址栏中手动输入),那么Rails将尝试使用来自routes.rb的路由规则处理此请求 - 这是错误的,因为它是一个"Backbone"路由.在这种情况下,如何加载页面并引导Backbone以处理此URL?
fey*_*fey 14
最后我找到了解决方案.
我将以下代码放入我的routes.rb中
class XHRConstraint
def matches?(request)
!request.xhr? && !(request.url =~ /\.json$/ && ::Rails.env == 'development')
end
end
match '(*url)' => 'home#index', :constraints => XHRConstraint.new
Run Code Online (Sandbox Code Playgroud)
使用此匹配器,所有非XHR请求都将路由到返回HTML页面的HomeController.并且XHR请求将由返回JSON响应的其他控制器处理.此外,我将以".json"结尾的请求留在开发环境中作为调试有效.
| 归档时间: |
|
| 查看次数: |
1975 次 |
| 最近记录: |