0

重複の可能性:
最近のアイテム - ルーティング エラー

Rails アプリで非常に奇妙な動作に遭遇しました。基本的に、ユーザーは写真をアップロードできます (carrierwave、基本的な scaffold 生成フォームを使用)。これらの写真のモデルは と呼ばれuser_photoます。これが私のルーティングファイルです:

ルーティング.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

そして今、次の URL パターンを使用して、ユーザーがアップロードした写真にアクセスしようとすると:

http://localhost:3000/user_photos/31 (this is just an example)

私はこのエラーが発生しています:

{:action="show", :controller="user_photos", :id=>nil} に一致するルートはありません

奇妙なことに、一部の user_photos は機能しますが、まったく予測できません! おそらく何がこのエラーを引き起こしているのかわからないので、ルーティング ファイルだけを投稿しました (これが最初に頭に浮かんだためです)。何が起こっているのかを理解するために何かアイデアや何か必要なことがあれば、私に知らせてください。前もって感謝します。


編集:

わかりました、実際には予測可能です。最後にアップロードされた user_photo だけが機能していません。次のものをアップロードすると、機能していなかった前の写真が機能し始めます。何か案は?

このスレッドはここに続きます:最近のアイテム - ルーティング エラー

4

1 に答える 1

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/votelike_user_photo_path(any_user_photo)

于 2012-10-19T19:53:52.817 に答える