Ruby on rails 在RubyonRails中定义自定义路由

Ruby on rails 在RubyonRails中定义自定义路由,ruby-on-rails,routes,ruby-on-rails-5,custom-routes,Ruby On Rails,Routes,Ruby On Rails 5,Custom Routes,我想用单个控制器和函数处理多个url段 下面是一个例子: 1) 及 (二) 如何在一行中定义路由,以便两个请求都可以使用单个功能执行 就像这里,我需要定义两条路线 获取“/:静态页面”,至:“SomeController#action_name” 获取“/:static_page/:second_option”,至:“SomeController#action_name” 但我如何在一行中定义?或者可以通过任何其他方式管理此方法 它被称为“包罗万象”,是一种射中自己脚的绝佳方式 match '*

我想用单个控制器和函数处理多个url段 下面是一个例子:

1) 及

(二)

如何在一行中定义路由,以便两个请求都可以使用单个功能执行

就像这里,我需要定义两条路线 获取“/:静态页面”,至:“SomeController#action_name”

获取“/:static_page/:second_option”,至:“SomeController#action_name”


但我如何在一行中定义?或者可以通过任何其他方式管理此方法

它被称为“包罗万象”,是一种射中自己脚的绝佳方式

match '*path', to: 'some#action_name'
您必须非常密切地关注排序(最后声明),因为它将捕获与模式匹配的任何其他路由—在本例中是所有路由

这也是一个巨大的bug来源,因为Rails现在将接受任何抛出的请求并将其传递给控制器,而不是引发路由错误。比如那些讨厌的机器人在你的网站上搜索WordPress漏洞


如果您真的需要一些额外的非restful路由,只需正常地声明它们,而不是将所有内容都集中到一个将成为怪物的控制器中。

第一个段是否总是相同的?例如,路线是否总是
/xyz/:某个
,其中
/xyz/
总是相同的?或者url的两部分都会改变吗?是的,两部分都会改变。是的,上面的解决方案通过via方法解决了我的问题。我刚才提到了在Rails.application.routes.draw do块的最后一个中,通过“get”将“*path”匹配到“profile#index”,这样就不会覆盖任何现有路径。这是一个解决方案,但不是一个很好的解决方案。如果您有其他选择,请接受。是的,谢谢您的建议,您是对的,它可能很容易受到攻击,但在我的情况下,它是可以的,因为我没有使用任何API服务,也没有创建任何API,也没有其他解决方案,我这一次。