【问题标题】:Getting ActionController::RoutingError when the route is listed in output of Rake Routes当路由列在 Rake Routes 的输出中时获取 ActionController::RoutingError
【发布时间】:2013-03-20 14:13:12
【问题描述】:

我有模型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 时,我得到的结果之一是 :new_drill_exercise_path

那么...这是怎么回事?

更多信息:

exercises_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

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    您缺少路径所需的drill_id。试试:

    new_drill_exercise_path(@drill)
    

    或:

    new_drill_exercise_path(params[:id]) # assumes this is inside `DrillsController#show` or similar
    

    【讨论】:

    • Hot-diggity-damn,你是对的!我一直认为该方法的名称会自动将钻孔对象拉入。
    猜你喜欢
    • 2015-10-13
    • 1970-01-01
    • 2016-08-25
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多