0

私はモデルDrillExercise. 演習はドリルに属し、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
4

1 に答える 1

1

You are missing the drill_id that is required for the path. Try:

new_drill_exercise_path(@drill)

or:

new_drill_exercise_path(params[:id]) # assumes this is inside `DrillsController#show` or similar
于 2013-03-20T14:16:21.480 に答える