这可能是一个非常愚蠢的问题。我对Ruby很新,因此不知道我在做什么。 我在application.html.erb中设置了一个布局。我导航的其中一个链接应该链接到简历的默认显示页面。我应该把它设置为索引而不是show。但是当我尝试这样做时,事情变得更加令人困惑。
根据我目前的代码,我得到的错误是
Showing thisSectionOfUrlTakenOut/app/views/layouts/application.html.erb
where line #22 raised:
No route matches {:controller=>"resume", :action=>"show"} missing required keys:
[:id]
Extracted source (around line #22):
19 <ul>
20 <li><%= link_to "Home", welcome_index_path %></li>
21 <li><%= link_to "Projects", projects_path %></li>
22 <li><%= link_to "Resume", resume_path, method => show %></li>
23 <li><%= link_to "Blog", posts_path %></li>
24 </ul>
25 </nav>
原样,我的application.html.erb看起来像这样。
<!DOCTYPE html>
<html>
<head>
<title>Portfolio</title>
<%= stylesheet_link_tag "application", media: "all",
"data-turbolinks-track" => true %>
<%= javascript_include_tag "application",
"data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
</head>
<body>
<header>
<% if current_user %>
<h1>Welcome</h1>
<%else%>
<h1> Portfolio</h1>
<%end%>
<nav>
<ul>
<li><%= link_to "Home", welcome_index_path %></li>
<li><%= link_to "Projects", projects_path %></li>
<li><%= link_to "Resume", resume_path, method => show %></li>
<li><%= link_to "Blog", posts_path %></li>
</ul>
</nav>
</header>
<%= yield %>
<footer>
<% if !current_user %>
<%= link_to "Login", admin_console_index_path%>
<% else %>
<%= link_to "Logout", destroy_user_session_path, :method => :delete%>
<%end%>
</footer>
</body>
</html>
routes.rb看起来像
Portfolio::Application.routes.draw do
devise_for :users
resources :posts do
resources :comments
end
resources :projects
resources :resume
resources :admin_console
resources :welcome
root 'welcome#index'
end
resume_controller.rb看起来像
class ResumeController < ApplicationController
def show
end
end
如果有帮助,当我开始使用设计时,一些问题就开始了。但从那时起,我认为其他错误使事情变得更糟。我会非常感谢任何帮助。如果你能向我解释,那就更好了
答案 0 :(得分:0)
问题出在你的路线上。您正在定义resources :resume
,这意味着有许多简历,因此当您想要链接到简历时,您必须知道其ID。
你应该做的是:
get '/resume' => 'resume#show'
同时删除简历链接中的method => show
选项。一旦修复路线,就不需要它可能会导致错误。