我是使用rails 3.2.3的RoR初學者。Ruby on Rails - 使用自定義動作設置自定義路線
我有一個產品資源和它下面的嵌套可用性資源。
我的路線是:
/products/:product_id/availabilities
這是偉大的工作。但是,我的可用性模型允許在確切的日期設置產品的價格,例如:今天產品'x'將具有'y'可用性(它是整數)和'z'價格(價格也是可用性模型的一個屬性)。
我的問題是,我現在想添加一個頁面,允許修改價格(而不是創建一個新的價格模型),類似於我的可用性。我只使用索引操作,因爲它會顯示所選產品的所有可用性。
我怎樣才能創建這樣一個路徑:
/products/:product_id/availabilities/prices
我嘗試添加這對我的路線RB:
match '/products/:id/availabilities/prices', :action => 'indexP', :via => [:get], :controller => 'prices'
match '/products/:id/availabilities/prices', :action => 'createP', :via => [:post], :controller => 'prices'
值得注意的是,我使用prices controller
使用相同的交互可用性模型,但這應該不成問題。
我也在那prices controller
創建了indexP
和createP
的動作。 在我的Availabilities視圖中,我創建了indexP.html.erb
以區別於包含可用性的常規index.html.erb
。
當我運行rake routes
我得到:
$ rake routes | grep prices
GET /products/:id/availabilities/prices(.:format)
POST /products/:id/availabilities/prices(.:format)
這是偉大的。然而,當我訪問該網址,我得到:
NoMethodError in Availabilities#show
{"product_id"=>"46",
"id"=>"prices"}
爲什麼做show
行動,而不是我的自定義是否匹配?
注:我不後是這樣的:/產品/:ID /可用性/:ID /價格
只是:/產品/:ID /可用性/價格
我知道這可能是一個愚蠢的問題,但我會很感激任何提示,以幫助我瞭解發生了什麼。
由於提前, 問候
哦,我......我不能相信時採取了先前的塊之前該塊位置......我完全以忘記這個重要的方面:第一'創建 - >最高priority.'感謝robertokl,雖然我也相信如果應用程序需要擴展,這可能會讓我陷入困境,我感謝你幫助我這麼快。雖然我建議任何其他人提出這個問題來創建一個新模型,以避免未來的麻煩。無論如何,標記爲已回答,問候 – Silver 2012-07-17 17:32:58