Rails 4 - 缺少必需的密钥 - 路由不是嵌套的

时间:2016-06-02 21:52:46

标签: ruby-on-rails ruby

我是rails的新手,并通过复数的教程进行操作。在本教程中,我们正在制作一个基本的简历应用程序。我遇到的问题是由于以下错误,我的简历页面无法呈现。

No route matches {:action=>"show", :controller=>"resumes"} missing required keys: [:id]

我已经查看了有关堆栈溢出的类似问题。大多数其他用户在使用嵌套路由时似乎遇到了这个问题。但是,我的路线没有嵌套。

这是我的rails文件。

路线:

Rails.application.routes.draw do
  get 'job/add'
  get 'job/list'
  resources :resumes do
    member do
      get 'viewed'
    end
  end
end

index.html.erb的相关部分

<tbody>
<% @resumes.each do |resume| %>
  <tr>
    <td><%= resume.name %></td>
    <td><%= resume.phone %></td>
    <td><%= resume.email %></td>
    <td><%= resume.street %></td>
    <td><%= resume.city %></td>
    <td><%= resume.state %></td>
    <td><%= resume.zip %></td>
    <td><%= resume.summary %></td>
    <td><%= link_to 'Show', resume_path %></td>
    <td><%= link_to 'Edit', edit_resume_path(resume) %></td>
    <td><%= link_to 'Destroy', resume, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>

resumes_controller.rb的相关信息

class ResumesController < ApplicationController
  # GET /resumes
  # GET /resumes.json
  def index
    @resumes = Resume.all
  end
end

耙路线:

 Prefix Verb   URI Pattern                   Controller#Action
  job_add GET    /job/add(.:format)            job#add
 job_list GET    /job/list(.:format)           job#list
viewed_resume GET    /resumes/:id/viewed(.:format) resumes#viewed
  resumes GET    /resumes(.:format)            resumes#index
          POST   /resumes(.:format)            resumes#create
  new_resume GET    /resumes/new(.:format)        resumes#new
  edit_resume GET    /resumes/:id/edit(.:format)   resumes#edit
   resume GET    /resumes/:id(.:format)        resumes#show
          PATCH  /resumes/:id(.:format)        resumes#update
          PUT    /resumes/:id(.:format)        resumes#update
          DELETE /resumes/:id(.:format)        resumes#destroy

如果我遗漏了您需要的任何信息,请告诉我。

如果我取出链接,页面会呈现。但是,页面没有填充存储在resume.name,resume.phone等中的信息。这让我相信也许我已经搞砸了数据库(也许我有!)。

我已进入rails控制台并确认相关的数据库记录确实存在(Resumes.all打印出信息列表)。所以我想也许数据库还没有被迁移。我跑了rake db:migrate并再次尝试,但信息仍无法打印到屏幕上。

这让我相信我的问题与数据库无法正确访问或数据未被检索有关。服务器日志确实显示正在查询sql db:Resume Load (0.2ms) SELECT "resumes".* FROM "resumes"

我非常不知道从哪里开始。任何帮助,关于在哪里搜索的想法,任何事情都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

在你看来,你有

<td><%= link_to 'Show', resume_path %></td>

我相信它抱怨你没有为路径提供身份证明。尝试将其更改为

<td><%= link_to 'Show', resume_path(resume) %></td>