我有模型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 %>
导致此错误:
ActionController::RoutingError at /drills/6/edit
没有路线匹配 {:action=>"new", :controller=>"exercises"}
尽管当我在 IRB 中调用 controller.methods 时,我得到的结果之一是:new_drill_exercise_path
那么……这是怎么回事?
更多信息:
练习控制器.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