Ruby on rails 获取ActionController::RoutingError当路由列在Rake路由的输出中时

Ruby on rails 获取ActionController::RoutingError当路由列在Rake路由的输出中时,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有Drill和Exercise模型。练习属于训练,我有routes.rb,其中包括: resources :drills do resources :exercises do end 因此,从rake路由中看到这种输出并不奇怪: drill_exercises GET /drills/:drill_id/exercises(.:format) exercises#index

我有
Drill
Exercise
模型。练习属于训练,我有routes.rb,其中包括:

resources :drills do
    resources :exercises do
end
因此,从rake路由中看到这种输出并不奇怪:

drill_exercises GET    /drills/:drill_id/exercises(.:format)                                      exercises#index
                              POST   /drills/:drill_id/exercises(.:format)                                      exercises#create
           new_drill_exercise GET    /drills/:drill_id/exercises/new(.:format)                                  exercises#new
          edit_drill_exercise GET    /drills/:drill_id/exercises/:id/edit(.:format)                             exercises#edit
               drill_exercise GET    /drills/:drill_id/exercises/:id(.:format)                                  exercises#show
                              PUT    /drills/:drill_id/exercises/:id(.:format)                                  exercises#update
                              DELETE /drills/:drill_id/exercises/:id(.:format)                                  exercises#destroy
令人惊讶的是,这一行代码:

<%= link_to t('.new', :default => t("helpers.links.prompt")),
      new_drill_exercise_path,
      :class => 'btn btn-primary', :remote => true %>
没有路由匹配{:action=>“new”,:controller=>“exercises”}

尽管我在IRB中调用controller.methods时得到的结果之一是
:new\u drill\u exercise\u path

所以。。。怎么回事

更多信息:

练习u controller.rb

class ExercisesController < InheritedResources::Base
  def new
    @drill = Drill.find(params[:id])
    @exercise = Exercise.new
    respond_to do |format|
      format.html { redirect_to(:action => 'edit')  }
      format.js 
    end 
  end
end
class ExercisesController'edit')}
format.js
结束
结束
结束

您缺少路径所需的
钻取id
。尝试:

new_drill_exercise_path(@drill)
或:


该死的,你说得对!我一直在想,方法的名称会自动神奇地将钻孔对象拉入。
new_drill_exercise_path(@drill)
new_drill_exercise_path(params[:id]) # assumes this is inside `DrillsController#show` or similar