我是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"
。
我非常不知道从哪里开始。任何帮助,关于在哪里搜索的想法,任何事情都会受到赞赏。
答案 0 :(得分:1)
在你看来,你有
<td><%= link_to 'Show', resume_path %></td>
我相信它抱怨你没有为路径提供身份证明。尝试将其更改为
<td><%= link_to 'Show', resume_path(resume) %></td>