【发布时间】:2012-07-17 17:04:46
【问题描述】:
我是使用 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'
值得注意的是,我使用prices controller 与相同的可用性模型进行交互,但这应该不是问题。
我还在 prices controller 中创建了 indexP 和 createP 操作。
在我的可用性视图中,我创建了一个 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/availabilities/prices
我知道这可能是一个愚蠢的问题,但如果有任何提示可以帮助我了解正在发生的事情,我将不胜感激。
提前致谢, 问候
【问题讨论】:
标签: ruby-on-rails routes custom-action custom-routes