2013-12-17 207 views
0

這可能是一個非常愚蠢的問題。我對Ruby很新,因此不知道我在做什麼。 我在application.html.erb中設置了一個佈局。我的導航鏈接之一就是鏈接到簡歷的默認顯示頁面。我應該可能將其設置爲索引而不是顯示。但是當我嘗試時,事情變得更加混亂。Ruby on Rails UrlGenerationError

隨着我目前擁有的代碼,我得到的錯誤是

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

你會有多個簡歷保存在分貝,或者這是一個個人網站,你只會顯示自己的? – jstim

+0

你是通過網站上的表單創建簡歷還是通過手工通過html? –

+0

資源需要一個id來顯示特定的簡歷@jstim askes你會有更多的1,或者你只是想/繼續顯示*你的*簡歷?如果前者,你需要傳遞一個簡歷對象(或一個id到resume_path) – Doon

回答

0

問題出在你的路線上。你正在定義resources :resume這意味着有許多簡歷,因此當你想鏈接到簡歷,你必須知道它的ID。

你應該做的卻是:

get '/resume' => 'resume#show' 

同時刪除在你的簡歷鏈接method => show選項。這是不需要的,一旦你修復路線,可能會導致錯誤。

+0

非常感謝你! –