ruby-on-rails - 如何在我的路由中对除一种模式之外的所有路由使用通配符?

标签 ruby-on-rails routes wildcard

我想使用 React-Router 来处理访问者部分的大部分页面,并同时创建一个单页面应用程序。但是,我想确保如果用户输入 /admin,他不会被“重定向”到 root_path

到目前为止,我只能将所有内容传递给通配符或进行“分隔”,如下所示:

root 'home#index'
# example 1
get '/*path' => 'home#index'
get '/articles' => 'home#articles_index'
# example 2
get '/articles/*all' => 'home#articles_index'
# vain try 1
get '/*path' => 'home#index', except: :admin
# vain try 2
get '/*path' => 'home#index', except: '/admin'

我发现了这些限制,但我意识到这是为了确保正确传递网址(即整数而不是字符串),但它不会将网址“列入黑名单”。

有什么想法吗?

提前谢谢

最佳答案

为此目的,您可以使用带有约束的通配符段。例如:

# config/routes.rb
Rails.application.routes.draw do
  root to: 'home#index'
  get '*subroute', to: 'home#index', constraints: { subroute: /(?!admin|login|logout).*/ }

  # all another routes below
end

除非 URL 中包含“admin”、“login”或“logout”,否则这会将任何请求传递到 home#index

关于ruby-on-rails - 如何在我的路由中对除一种模式之外的所有路由使用通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915677/

相关文章:

ruby-on-rails - Rails - 从字符串数组中下拉

ruby-on-rails - 在 ruby​​ on Rails 中单击按钮时调用操作

c# - 与 url 不同的操作名称

ruby-on-rails - 根据 current_user - ROR 更改 url

vue.js - 在 Nuxt 中将多个新路径扩展到单个页面

java - 使用递归和通配符 (*) 在文件中搜索

java - java中泛型类型的子类型

ruby-on-rails - 如何告诉 Gem 文件使用 gem 的特定本地副本

Java 通配符未按预期通过继承传递(意外的通配符捕获)

ruby-on-rails - 从 Rails 中的外部 API 捕获错误