0

次の URL で checkpoints#index メソッドにアクセスしようとしています。 http://localhost:3000/lessons/introductions/checkpoints/

しかし、私はこのエラーが発生します:

No route matches {:action=>"show", :controller=>"checkpoints", :lesson_id=>#<Checkpoint id: 1, checkpoint: "Definition of Monetary Policy", url: "http://www.youtube.com/watch?v=HX3wOWN9-sM", objective: "Define monetary policy", description: "Welcome to this series of lectures on monetary poli...", question: "What is the definition of monetary policy?", hint: "It is the deliberate manipulation of something OR s...", answer: "-", lesson_id: 8, created_at: "2012-06-29 07:21:47", updated_at: "2012-06-30 08:24:15", slug: "definition-of-monetary-policy">}

私の「レーキルート」では次のようになるため、これは当てはまりません。

      lesson_checkpoints GET    /lessons/:lesson_id/checkpoints(.:format)          checkpoints#index
                         POST   /lessons/:lesson_id/checkpoints(.:format)          checkpoints#create
   new_lesson_checkpoint GET    /lessons/:lesson_id/checkpoints/new(.:format)      checkpoints#new
  edit_lesson_checkpoint GET    /lessons/:lesson_id/checkpoints/:id/edit(.:format) checkpoints#edit
       lesson_checkpoint GET    /lessons/:lesson_id/checkpoints/:id(.:format)      checkpoints#show
                         PUT    /lessons/:lesson_id/checkpoints/:id(.:format)      checkpoints#update
                         DELETE /lessons/:lesson_id/checkpoints/:id(.:format)      checkpoints#destroy`

#show アクションではなく #index アクションをロードしませんか? このエラーの考えられる理由を知っている人はいますか?

これは私のroutes.rbがどのように見えるかです:

resources :lessons do
  resources :checkpoints
end  

resources :lessons

resources :topics do
  resources :lessons
end 

#Devise Routes
devise_for :users


resources :subjects do
  resources :topics
end
4

3 に答える 3

0

私は問題を発見しました:私のfriendly_idは正しかったです。エラーは私の見解自体にありました。リソースを2回定義したので、localhost / lessons/blahblahのURLにアクセスできます。それは私のために働きます。私のビューファイルは(デフォルトのネストされていないものから)編集する必要があり、修正されるとすべてが再びスムーズに機能しました。

于 2012-07-01T08:17:33.000 に答える
0

2 つの問題があります。

  1. レッスン モデルの Friendly_id の設定に問題があると思います。あなたの Friendly_id 設定は、レッスンのタイトルではなく、レッスンのフレンドリー ID として Checkpoint のオブジェクトを提供しています。これは、指定された URL から必要なものです。

  2. ルート宣言が正しくありません。リソースの「レッスン」を 2 回宣言しています。

resources :lessons do  
  resources :checkpoints  
end  
resources :lessons  

コンソールで Friendly_id の正確性を確認できます。

lesson = Lesson.create(name: 'introduction')
lesson.friendly_id #=> should output 'introduction'
于 2012-07-01T07:20:54.093 に答える
0

「紹介」のルートについて言及していなかったと思います。

resources :lessons do
   resources :introductions
end 

resources :introductions do
   resources :checkpoints
end
于 2012-06-30T10:01:21.637 に答える