1

如果我在我的Rails以下航线的routes.rb文件:Rails的路径变量

get "time_track/check_in" 

会有什么路径变量是我可以在我的看法使用?我假设像time_track_check_in_pathcheck_in_time_track_path。然而,无论这些工作:

<%= link_to 'Check-in', check_in_time_track_path %> 
<%= link_to 'Check-in', time_track_check_in_path %> 
+1

是什么'耙routes'说一下吗? – slhck 2013-03-19 21:15:57

+0

它应该是第二个,你会得到什么错误? – Zippie 2013-03-19 21:22:46

+1

我一定是犯了一个错误,@Zippie,你是对的。 @slhck,这有助于向我确认它是'time_track_check_in_path',所以我再次尝试了它,并且它工作了......我一开始就输错了它...... – 2013-03-19 21:26:50

回答

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