Ruby on rails Rails路由多个可选参数

Ruby on rails Rails路由多个可选参数,ruby-on-rails,ruby-on-rails-4,routes,Ruby On Rails,Ruby On Rails 4,Routes,我有一个问题,你如何能使多个可选参数。在我的变体中,我需要类似“/(:first_name | |:last_name | | middle_name | all_name)”的东西。我怎样才能实现,我能在路线上实现这样的事情 顺便说一句,如果我能做很多多参数的f.e.: /(:a | |:b | |:c)/(:d | |:e)/(:n | |:m) 感谢您的回答。您必须在控制器中完成所有有条件的工作-路由用于捕获请求URL并将它们定向到特定功能(控制器/操作) 因此,您的使用问题 /(:a |

我有一个问题,你如何能使多个可选参数。在我的变体中,我需要类似“/(:first_name | |:last_name | | middle_name | all_name)”的东西。我怎样才能实现,我能在路线上实现这样的事情

顺便说一句,如果我能做很多多参数的f.e.:

/(:a | |:b | |:c)/(:d | |:e)/(:n | |:m)


感谢您的回答。

您必须在控制器中完成所有有条件的工作-路由用于捕获请求URL并将它们定向到特定功能(控制器/操作)

因此,您的使用问题

/(:a | |:b | |:c)/(:d | |:e)/(:n | |:m)

。。。从根本上说是有缺陷的(你不能有条件“或”在路线上)


您可以拥有的是:

这些是可选的参数,路由可以使用,但不必使用

在您的情况下,您需要使用它们来表示传递的名称:

#config/routes.rb
resources :users, path: "" do
   get :first_name(/:middle_name(/:last_name)), action: :show, on: :collection
end

这是最好的,你会得到没有做一些自定义的路由系统。。。比如有
slug
或其他什么东西。

你不可能做到这一点-服务器如何判断给定的参数代表的是名字还是姓氏?为什么你需要这样做?我需要不同的URL用于不同的查询。仍然不清楚,你试图实现什么,通常每个网站需要不同的URL用于不同的查询。问题是你会怎样;lus这些参数在你的控制器。我有一个控制器,我在其中过滤参数,在当前状态下,我只有很多得到相同的控制器,现在我需要多个URL为同一个控制器只是为了不同的查询。其次,您只有一堆链接,其中合并参数以实现一个大查询,对于该查询,我需要显示url名称,而不是像/names?first_name=…Ok示例:
user/john/
。约翰是第一名还是中间名?你能做的最好的:
user/first\u name/john
user(/first\u name/:first\u name)(/middle\u name/:middle\u name)
机器人它并不比GET参数漂亮多少可选参数需要
/
?没有它,你还能活下去吗?例如,
/my-:param(-can-:optional)(-和this-:too)
我认为只有使用
/
才可以,尽管您需要进行测试才能发现这是一种有效的Ruby语法吗?
:first\u name(/:middle\u name(/:last\u name))
谢谢。多亏了这篇文章和一些查询对象,我才完成了一个非常糟糕的功能。