1
rails new example
rails g scaffold widget
rake db:migrate
- 編輯的routes.rb如下:
scope ":year" do resources :widgets end
curl http://0.0.0.0:3000/2011/widgets
成功echo "Widget.new.save" | rails c
curl http://0.0.0.0:3000/2011/widgets/1
成功- 但現在
curl http://0.0.0.0:3000/2011/widgets
失敗,出現以下錯誤:
No route matches {:action=>"show", :controller=>"widgets", :year=>#<Widget id: 1
..等沒有路由匹配作用域資源
爲什麼它認爲動作是 「作秀」?爲什麼它認爲年份是一個小部件實例?很奇怪。我在rails 3.0.9和3.1.0.rc6中得到了相同的結果。
在此先感謝您的幫助。
我確實有'resources:widgets'(這是我的問題中的拼寫錯誤),但是我在調用widget_path()時錯過了一年。我應該更仔細地查看堆棧跟蹤。這是一種誤導性的錯誤消息(沒有路由匹配),但現在我知道發生了什麼。謝謝。 –
我沒有在'widget_path()'的每次調用中指定年份,而是發現將'def default_url_options(options = {}) {:year => @year} end'添加到我的ApplicationController中更容易。在發現default_url_options之前,我不會提及我浪費了多少小時:-) –