2011-07-23 48 views
0

我有一個控制器路徑定義如下:簡單的Rails路徑問題

resources :watched, :controller => "watched", :only => :index 

當我運行rake routes,我得到如下:

watched_index GET /watched(.:format) {:action=>"index", :controller=>"watched"} 

出於某種原因,既不watched_pathwatcheds_path似乎在我的意見中定義。有任何想法嗎?

+0

哎呀,我打算輸入'watcheds_path'而不是'watchers_path'。 'watchers_path'也不起作用。 – LandonSchropp

回答

1

據耙路線的輸出,你應該使用的路徑是下面的任:

watched_index_path 

watched_index_url 
+0

是的,這是問題所在。然而,你能否詳細說明爲什麼它是'watched_index_path'?如果它是一個資源,爲什麼它不是'watched_pa​​th'? – LandonSchropp

+0

經驗法則是:耙路線始終是檢查確切路線信息的地方。看看你的輸出,第一列代表路線。附加_path或_url來生成相應的鏈接。 – nugget

+0

啊,我想我是在誤解它。謝謝。 – LandonSchropp

0

您使用resources這樣的Rails的複數化您的資源:

> 'watched'.pluralize 
=> "watcheds" 

您可以在config/initializers/inflections.rb定義手動多元化,但你應該堅持名詞對你的資源,因爲他們是唯一這很有道理。誰在觀看?這個資源實際上展示了什麼?定義一個不規則的拐點

例子:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'thesinglewatched', 'themanywatched' 
    # or... 
    inflect.uncountable 'watched' 
end 
+0

在這種情況下,Watched定義了幾個不同模型和用戶之間的多態關係。因此,我無法真正說出正在觀看的內容,因爲未來可能會有更多可觀看的課程,我現在就可以做。我不知道變化。我將不得不更詳細地探討這一點,因爲這聽起來像是一種簡單的方法來完成我迄今爲止所做的工作。至於多元化,我在我原來的文章中輸入錯誤。我的意思是說'watchers_path'也無法工作。 – LandonSchropp

+0

如果你有一個多態的實體,那麼你的資源的名稱可以是'watchable'。 –

0

嘗試watcheds_path,讓我知道,如果這個工程