Rails路由多个可选参数

时间:2015-10-15 17:42:25

标签: ruby-on-rails ruby-on-rails-4 routes

我有一个问题,你如何制作多个可选参数。 F.E.在我的变体中,我需要类似于“/(:first_name ||:last_name || middle_name || all_names)”。我怎样才能实现并且可以在路线中实现这样的目标?

不过,如果我可以做很多多个参数,那就太好了。

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

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

您必须完成控制器中的所有条件工作 - 路径用于捕获请求URL&将它们引导到特定功能(控制器/动作)。

因此,您的使用问题

/(: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或其他内容。