如果我的Rails routes.rb文件中有以下路由:
get "time_track/check_in"
我可以在视图中使用路径变量是什么?我假设time_track_check_in_path
或check_in_time_track_path
。但是,这些都不起作用:
<%= link_to 'Check-in', check_in_time_track_path %>
<%= link_to 'Check-in', time_track_check_in_path %>
答案 0 :(得分:0)
当提供动词路由时,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