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