0

当使用菜单允许从控制器“Drills”中选择“评估”方法时,我收到错误消息 No route matches {:action=>"evaluate", :controller=>"drills"

控制器

class DrillsController < ApplicationController
before_filter :load_drill, except: [:index, :new, :create]

authorize_resource

rescue_from GeoPosition::Error::InvalidDegreesError,
          GeoPosition::Error::InvalidMinutesError,
          GeoPosition::Error::InvalidSecondsError do |e|
  flash[:message] = e.message
  redirect_to :back
 # can only be placed here
 end

def evaluate
  evaluation_assumption = Evaluation.generate_projection(assumption_params)
  if evaluation_assumption.valid?
    result_list = Evaluation.generate_projection(@drill.drill_interests,
                                               evaluation_assumption)
    respond_to do |format|
      format.json { render json: results_list}
    end
  else
    respond_to do |format|
      format.json { render json: []}
    end
  end
end
.. controller continues

使用 CONTROLLER=drills rake 路线我得到

drill_evaluate POST   /drills/:drill_id/evaluate(.:format) drills#evaluate
       drills GET    /drills(.:format)                    drills#index
             POST   /drills(.:format)                    drills#create
   new_drill GET    /drills/new(.:format)                drills#new
  edit_drill GET    /drills/:id/edit(.:format)           drills#edit
       drill GET    /drills/:id(.:format)                drills#show
             PUT    /drills/:id(.:format)                drills#update
             DELETE /drills/:id(.:format)                drills#destroy

尝试进入 Drill - Evaluate 的菜单视图是 Drill_evalate_path,如下所示

....
<ul class="t-nav">
      <li class="tab <%=(tab_id == 'Drill Information') ? 'active' : '' %>">
          <%= link_to "Drill Information", drill_stakes_path %></li>
      <li class="tab <%=(tab_id == 'Investor Room') ? 'active' : '' %>">
          <%= link_to "Expanded Investor Room", 
          drill_evaluate_path %></li>
    </ul> 
....

在菜单视图中,我尝试了很多不同的选项,包括

<li class="tab <%=(tab_id == 'Investor Room') ? 'active' : '' %>">
          <%= link_to "Expanded Investor Room", 
          drills_path, action: => :evaluate %></li>

它试图执行“创建”操作。

我想我可以使用 Rake Routes 输出中最左边的列和 link_to 将我带到适当的页面。我一定是错的。如何设置 link_to 以便将我带到 Drills 控制器中的评估操作?

提前感谢皮埃尔

4

1 回答 1

2

这是一条会员路线,这意味着您必须给它id您期望的演习。

IE:

drill_evaluate_path(id)
#or
drill_evaluate_path(drill_object)

这里写得很清楚(见drill_id参数):

drill_evaluate POST   /drills/:drill_id/evaluate(.:format) drills#evaluate
于 2013-08-21T08:11:01.380 回答