0

确定这里就是当我点击一个特定链接显示在我收到的浏览器在这种一般性错误消息:路由错误是没有意义的......反正我

没有路由匹配{:动作=> “编辑”,:控制器=>“时间表”,:incident_id =>零}

下面是页包含链接(包括创建新的记录中的路径)的代码

<div style="float:left;padding:25px;"> 
<p><%= link_to "Add a Command Officer", new_incident_timesheet_command_officer_path %></p> 
</div> 

在我点击该链接之前,浏览器url的内容如下:

localhost:3000 /事件/ 197 /时间表/编辑

而上面的浏览器网址总是有意义的。

当我将鼠标悬停我的鼠标在链接到“添加一个命令官”它说,在浏览器的底部: 本地主机:3000 /事件/ 197 /时间表/ command_officers /新

但是当我点击它会出现我在顶部提到的路由错误。以下是来自Command_Officers_controller和路由文件的代码。

我相信我已经包含了所有需要的信息,以帮助我的人,但如果我错过了一些东西让我知道。感谢您的帮助

的routes.rb

root :to => "incidents#index" 

resources :users 
resources :profiles 

resources :incidents do 

resource :mat_list 
member do 
post :send_notice 
end 
member do 
get :changestatus 
end 



resource :timesheet do 
    resources :command_officers 
    resources :fire_chiefs 
    resources :fire_fighters 
    resources :safety_officers 
    resources :emts 
    resources :hazmat_specialists 
    resources :command_vehicles 
    resources :engines 
    resources :emergency_supports 
    resources :hazmat_units 
    resources :field_units 
    resources :pumpers 
    resources :tankers 
    resources :rescue_units 
    resources :ladder_truck75s 
    resources :ladder_truck150s 
end 
end 


resource :session do 
    member do 
    get :resetpass 
    post :resetpass 
end 
end 

command_officers_controller.rb

def new 
    @command_officer = CommandOfficer.new 
    @timesheet = Incident.find(params[:incident_id]).timesheet 

    respond_to do |format| 
    format.html # new.html.erb 
    end 
end 

# GET /command_officers/1/edit 
def edit 
    @command_officer = CommandOfficer.find(params[:id]) 
end 

# POST /command_officers 
# POST /command_officers.xml 
def create 
    # @new_command_officer = CommandOfficer.new(params[:command_officer]) 
    @timesheet = Incident.find(params[:incident_id]).timesheet 
     @command_officer = @timesheet.command_officer.build(params[:command_officer]) 

    respond_to do |format| 
    if @command_officer.save 
       format.html { redirect_to(edit_incident_timesheet_path, :notice => 'Command officer was successfully created.') } 
    else 
     flash[:error] = "What happened?" 
     format.html { render :new } 
     end 
end 
end 

回答

1

问题是你试图在下一页生成一些链接,但是你传递给rails的incident_id是零。检查您的视图/控制器并删除/修复有问题的代码。

更普遍的是,学习如何阅读rails为您提供的堆栈跟踪,以便您可以自行跟踪这些跟踪。

+0

感谢您的建议,但部分问题是,此应用程序用于正常工作。但是我不得不在计算机上更新ruby和rails的版本,而现在用于工作的代码在某些区域已经打破。无可否认,我不是最好的程序员,我对有些“固定”代码有点怀疑,这些代码并没有真正打破。但我会尝试阅读Rails堆栈来解决问题。 – RubyDude1012 2013-03-27 17:53:58

+1

通读堆栈,发现问题。感谢您提供简单而有效的建议。 – RubyDude1012 2013-03-27 18:46:39

1

你做一个嵌套的路线,但没有通过事件ID,如果你有一个名为@incident一个实例变量,你可以这样做:

<%= link_to "Add a Command Officer", new_incident_timesheet_command_officer_path(@incident) %> 
相关问题