2016-06-02 12 views
0

Ich bin neu auf Schienen und folgt durch ein Tutorial von Plural. Im Tutorial machen wir eine grundlegende Lebenslauf-Anwendung. Das Problem, das ich habe, ist, dass meine Lebenslaufseite aufgrund des folgenden Fehlers nicht rendern kann.Schienen 4 - Fehlende erforderliche Schlüssel - Route ist NICHT verschachtelt

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

Ich habe ähnliche Fragen auf Stapelüberlauf durchgesehen. Die meisten anderen Benutzer scheinen bei der Verwendung verschachtelter Routen auf dieses Problem zu stoßen. Meine Route ist jedoch nicht verschachtelt.

Hier sind meine Rails-Dateien.

Routen:

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

Relevante Teil von 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 %> 

Relevante Informationen aus resumes_controller.rb

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

Rake Routen:

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 

Bitte lassen Sie mich wissen, wenn ich irgendwelche Informationen weggelassen habe, die Sie brauchen.

Die Seite rendert, wenn ich die Links entferne. Die Seite ist jedoch NICHT mit den Informationen gefüllt, die in resume.name, resume.phone usw. gespeichert sind. Dies führte mich zu der Annahme, dass ich vielleicht etwas mit der Datenbank vermasselt hatte (und vielleicht habe ich das!).

Ich habe in Rails-Konsole gegangen und bestätigt, dass die zugehörigen Datenbank Datensätze existieren (Resumes.all druckt eine Liste der Informationen). Also dachte ich, dass die Datenbank vielleicht nicht migriert wurde. Ich lief rake db:migrate und versuchte es erneut, aber die Informationen werden immer noch nicht auf dem Bildschirm gedruckt.

Das führt mich zu der Annahme, dass mein Problem in der Datenbank nicht korrekt zugegriffen oder Daten nicht abgerufen werden. Serverprotokolle zeigen an, dass die SQL-Datenbank abgefragt wird: Resume Load (0.2ms) SELECT "resumes".* FROM "resumes".

Ich bin sehr ratlos, wohin ich von hier aus gehen soll. Jede Hilfe, Ideen, wo zu suchen, alles würde geschätzt werden.

Antwort

1

Ihrer Ansicht nach haben Sie

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

Ich glaube, dass Sie für den Pfad eine ID nicht angeben beschwert. Versuchen Sie es zu ändern

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

Danke für die Rückmeldung! Leider behebt das den Fehler nicht. Ich bekomme immer noch dieselbe Nachricht. – Cities

Verwandte Themen