1
  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

No route matches {:action=>"show", :controller=>"widgets", :year=>#<Widget id: 1.. ETC。

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

在此先感谢您的帮助。

4

1 回答 1

2

尝试

resources :widgets

(以 S 结尾)

UPD:在 index.html.erb 中,而不是

link_to widget 

用 smth like

link_to widget_path(widget, :year => 2011)

或者

link_to widget_path(2011, widget)
于 2011-08-27T09:53:21.703 回答