没有路由匹配范围资源

时间:2011-08-27 06:18:56

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 rails-routing

  1. rails new example
  2. rails g scaffold widget
  3. rake db:migrate
  4. 编辑routes.rb,如下所示:scope ":year" do resources :widgets end
  5. curl http://0.0.0.0:3000/2011/widgets成功
  6. echo "Widget.new.save" | rails c
  7. curl http://0.0.0.0:3000/2011/widgets/1成功
  8. 但现在curl http://0.0.0.0:3000/2011/widgets因以下错误而失败:
  9. No route matches {:action=>"show", :controller=>"widgets", :year=>#<Widget id: 1 ..等等。

    为什么它认为行动是“显示”?为什么它认为年份是小部件实例?很奇怪。我在rails 3.0.9和3.1.0.rc6中得到了相同的结果。

    提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

resources :widgets

(最后是S)

UPD:在index.html.erb而不是

link_to widget 

使用像

这样的smth
link_to widget_path(widget, :year => 2011)

link_to widget_path(2011, widget)