我有一个问题,如何制作多个可选参数。 F.e.在我的变体中,我需要与“/(:first_name || :last_name || middle_name || all_names)”类似的东西。我怎样才能实现以及我可以在 route 实现这样的事情吗?
顺便说一句,如果我可以做很多多个参数,那就太好了:
/(:a || :b || :c)/(:d || :e)/(:n || :m)
感谢您的回答。
最佳答案
您必须在 Controller 中完成所有条件工作 - 路由用于捕获请求 URL 并将其定向到特定功能( Controller /操作) .
因此,您的使用问题
/(:a || :b || :c)/(:d || :e)/(:n || :m)
...从根本上来说是有缺陷的(路由中不能有条件“或”)。
您可以拥有的是bound parameters :
这些是路由可以采用的可选参数,但不是必须采用的参数。
在您的情况下,您需要使用它们来表示已传递的名称:
#config/routes.rb
resources :users, path: "" do
get :first_name(/:middle_name(/:last_name)), action: :show, on: :collection
end
这是您无需在路由系统中执行某些自定义操作(例如使用 slugs
或其他内容)所能获得的最佳结果。
关于ruby-on-rails - Rails 路由多个可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155103/