gpt4 book ai didi

ruby-on-rails - Rails 捕获所有路线,不包括资源和 HTML

转载 作者:行者123 更新时间:2023-12-04 07:40:34 24 4
gpt4 key购买 nike

我正在使用 Angular html5mode,因此将 Rails 路由设置为将所有失败的请求重定向到 root

# Angular catch all to allow page refresh
get '*page' => "home#index"

这很好用,除非 Angular 模块请求丢失的模板(例如/assets/templates/page.html),当它导致无限循环时

如何让 Rails 捕捉所有路线,除了/assets 中的东西?

最佳答案

我注意到这已经很老了,但通过 Google 找到了它,并且对这里的唯一答案不满意。由于我自己解决了这个问题,我将分享我的解决方案。

在您的 route 使用格式参数

get "/*path" => "home#index", format: false

只需禁用通配符路径的格式选项,它就会忽略任何格式的请求(例如 css、js、png...)


在路由中使用约束

get "/*path" => "home#index", constraints: -> (req) { !(req.fullpath =~ /^\/assets\/.*/) }

使用简单的 lambda 指定一个约束选项,检查您的路径值,这不是最好的正则表达式,但显示了我在这里的想法......




我个人在我的应用程序中使用格式参数,约束选项还允许您传入一个对象,查看 rails 指南了解更多信息 -> http://guides.rubyonrails.org/routing.html#advanced-constraints

关于ruby-on-rails - Rails 捕获所有路线,不包括资源和 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216223/

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