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