Jak*_*ton 2 ruby-on-rails rails-routing angularjs
我正在使用Angular html5mode,所以让Rails路由设置将所有失败的请求重定向到root
# Angular catch all to allow page refresh
get '*page' => "home#index"
Run Code Online (Sandbox Code Playgroud)
这很好用,除非Angular模块请求丢失的模板(例如/assets/templates/page.html),当它导致无限循环时
除了/assets中的内容之外,我怎么能告诉Rails捕获所有路由?
小智 6
我注意到这已经很老了,但是通过谷歌找到它并且对这里唯一的答案不满意.自从我自己完成这项工作后,我将分享我的解决方案.
在路线中使用format参数
get "/*path" => "home#index", format: false
Run Code Online (Sandbox Code Playgroud)
只需禁用通配符路径的格式选项,即可忽略任何格式的请求(例如css,js,png ...)
在路线中使用约束
get "/*path" => "home#index", constraints: -> (req) { !(req.fullpath =~ /^\/assets\/.*/) }
Run Code Online (Sandbox Code Playgroud)
使用简单的lambda指定一个约束选项来检查你的路径值,而不是最好的正则表达式,但是显示了我要去的想法...
我个人在我的应用程序中使用format参数,约束选项也允许您传入一个对象,查看rails指南以获取更多信息 - > http://guides.rubyonrails.org/routing.html#advanced-constraints
| 归档时间: |
|
| 查看次数: |
1869 次 |
| 最近记录: |