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. 입니다
  9. 하지만 지금 curl http://0.0.0.0:3000/2011/widgets 다음과 같은 오류와 함께 실패합니다

No route matches {:action=>"show", :controller=>"widgets", :year=>#<Widget id: 1 .. 등없음 경로 일치 범위 자원

왜 행동이 "쇼"라고 생각 하는가? 왜 올해가 위젯 인스턴스라고 생각합니까? 아주 이상한. 나는 레일 3.0.9와 3.1.0.rc6에서 같은 결과를 얻는다.

미리 도움을 주셔서 감사합니다.

답변

2

는 (결국 S와)

UPD를

resources :widgets 

을 시도 : 대신 index.html.erb에

link_to widget 

사용 떨어지게

link_to widget_path(widget, :year => 2011) 

같은 또는

link_to widget_path(2011, widget) 
+0

나는 리소스 : 위젯 (내 질문에 오타 였음)이 있었지만 widget_path() 호출에서 그 해를 놓치고있었습니다. 나는 스택 트레이스를 더 자세히 살펴야했다. 그것은 일종의 오도 된 오류 메시지입니다 (경로가 일치하지 않음). 그러나 지금 무슨 일이 일어나고 있는지 봅니다. 감사. –

+0

'widget_path()'를 호출 할 때마다 연도를 지정하는 대신,'def default_url_options (options = {}) {: year => @year} end'를 내 ApplicationController에 추가하는 것이 훨씬 쉽다는 것을 알게되었습니다. 나는 default_url_options :-)를 발견하기 전에 얼마나 많은 시간을 낭비했는지 언급하지 않을 것이다. –