我是使用 rails 3.2.3 的 RoR 初学者。
我有一个产品资源和一个嵌套的可用性资源。
我的路线是:
/products/:product_id/availabilities
效果很好。
但是,我的可用性模型允许在确切日期设置产品的价格,例如:今天产品“x”将具有“y”可用性(它是一个整数)和“z”价格(价格也是一个属性可用性模型)。
我的问题是,我现在想添加一个允许修改价格的页面(无需创建新的价格模型),类似于我的可用性页面。我只使用 index 操作,因为它将显示该唯一选定产品的所有可用性。
如何创建如下路线:
/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'
值得注意的是,我正在使用 aprices controller
与相同的可用性模型进行交互,但这应该不是问题。
我也在其中创建prices controller
了indexP
andcreateP
动作。在我的可用性视图中,我创建了一个indexP.html.erb
以区别于index.html.erb
包含可用性的常规。
当我跑步时,rake routes
我得到:
$ rake routes | grep prices
GET /products/:id/availabilities/prices(.:format)
POST /products/:id/availabilities/prices(.:format)
这是伟大的。但是,当我访问该 URL 时,我得到:
NoMethodError in Availabilities#show
{"product_id"=>"46",
"id"=>"prices"}
为什么它执行该show
操作而不是我的自定义匹配?
注意:我不喜欢这样的东西:/products/:id/availabilities/:id/prices
只是:/products/:id/availability/prices
我知道这可能是一个愚蠢的问题,但我希望有任何提示可以帮助我了解正在发生的事情。
提前致谢,问候