私はモデル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を呼び出すと、返される結果の1つが返されるという事実にもかかわらず: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