提供动词路由时,RouteSet
将对控制器/动作和辅助方法名称做出最佳猜测。它确实需要匹配路径中的至少 2 个段,否则您必须自己提供控制器、操作和助手名称。
对于单段匹配器(路径中没有斜杠),需要完整的定义。
# Looks for FooController#index and provides foo_path/foo_url
get 'foo', :to => 'foo#index', :as => :foo
对于具有两个或更多段的匹配器,它将采用以下语法。
# Looks for FooController#bar and provides foo_bar_path/foo_bar_url
get 'foo/bar'
# Looks for Baz::FooController#bar and provides baz_foo_bar_path/baz_foo_bar_url
get 'baz/foo/bar'
需要注意的一点是,在路径助手名称方面,此行为与资源匹配器不同。使用此语法提供了 namespace_controller_action,而使用资源和命名空间提供了 action_namespace_controller,这可能是您对这两种格式的一些混淆所在。
例如,如果您已经有时间跟踪资源,那么您可以像这样添加它:
# Provides /time_track/check_in as check_in_time_track_path mapping to TimeTrackController#check_in
resources :time_track do
collection do
get :check_in
end
end