我在rails应用程序中遇到了一个非常奇怪的行为。基本上,用户可以上传照片(使用carrierwave,基本脚手架生成的表格)。这些照片的模型称为user_photo
。这是我的路由文件:
routing.rb
Myapp::Application.routes.draw do
#...
match 'profiles/:profile_id/photos' => 'user_photos#index_profile', :as => :profile_user_photos
match 'user_photos/vote/:id' => 'user_photos#vote', :as => :user_photo_vote
resources :user_photos do
resources :comments
end
#...
end
现在,当我尝试使用以下网址模式访问用户上传的部分照片时:
http://localhost:3000/user_photos/31 (this is just an example)
我收到了这个错误:
没有路线匹配{:action =>“show”,:controller =>“user_photos”, :ID =>零}
奇怪的是,有些user_photos有效,这完全不可预测!我不确定是什么原因导致这个错误所以我只发布了我的路由文件(因为这是我想到的第一件事)。如果您有任何想法或需要更多信息来了解正在发生的事情,请告诉我。提前谢谢。
好的,实际上它是可以预测的。只有最后上传的user_photo无法正常工作,当我上传下一个时,前一个无效的用户开始工作。有什么想法吗?
此主题在此处继续:Recent item - Routing error
答案 0 :(得分:2)
试试:
Myapp::Application.routes.draw do
#...
match 'profiles/:profile_id/photos' => 'user_photos#index_profile', :as => :profile_user_photos
resources :user_photos do
get :vote, :on => :member
resources :comments
end
#...
end
行get :vote, :on => :member
将生成您可以使用/user_photos/:id/vote
like_user_photo_path(any_user_photo)