“show”操作无法预测的路由错误

时间:2012-10-19 19:44:38

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

  

可能重复:
  Recent item - Routing error

我在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

1 个答案:

答案 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)