Ruby on Rails UrlGenerationError

时间:2013-12-17 01:29:22

标签: ruby-on-rails ruby ruby-on-rails-3 devise

这可能是一个非常愚蠢的问题。我对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

如果有帮助,当我开始使用设计时,一些问题就开始了。但从那时起,我认为其他错误使事情变得更糟。我会非常感谢任何帮助。如果你能向我解释,那就更好了

1 个答案:

答案 0 :(得分:0)

问题出在你的路线上。您正在定义resources :resume,这意味着有许多简历,因此当您想要链接到简历时,您必须知道其ID。

你应该做的是:

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

同时删除简历链接中的method => show选项。一旦修复路线,就不需要它可能会导致错误。