2016-05-31 28 views
0

Ich habe mit einem kleinen Problem mit dem Anzeigen von Benutzerdaten in Blog Ich schreibe fest. Ich habe profiles_controller mit dem folgenden Code:Fehlender ': user_id' Schlüssel beim Versuch, Benutzerdaten anzuzeigen

class ProfilesController < ApplicationController 
    def index 
    @profiles = User.all 
    end 
    def show 
    @profile = User.find(params[:user_id]) 
    end 
end 

folgenden Routen in routes.rb:

get '/profiles', to: "profiles#index", as: 'profiles' 
get '/profiles/:user_id', to: "profiles#show", as: 'profile' 

und folgenden Vorlagen:

index.html.erb:

<div class="container"> 
    <div class="row"> 
    <% @profiles.each do |user| %> 
     <div class="col-md-6"> 
     <p><%= user.first_name %> <%= user.last_name %></p> 
     <%= link_to 'View Profile', profile_path %> 
     </div> 
    <% end %> 
    </div> 
</div> 

show.html.erb

<div class="container"> 
    <p><%= @profile.first_name %> <%= @profile.last_name %></p> 
    <p><%= @profile.email %></p> 
    <p><%= @profile.about %></p> 
</div> 

I deviseUser Modell mit zusätzlichen attrs als Vorname, Nachname und 'über' Abschnitt erweiterten Einsatz. Wenn ich versuche, entweder zu /profiles Weg zu navigieren, gibt er mir folgende Fehlermeldung:

ActionController::UrlGenerationError in Profiles#index 
No route matches {:action=>"show", :controller=>"profiles"} missing required keys: [:user_id] 

Als ich

<%= link_to 'View Profile', profile_path %> 

Linie von index.html.erb, entfernen /profiles Pfad funktioniert, aber /profile Pfad geht immer noch nicht. Was habe ich falsch gemacht?

Antwort

1

In Ihrer show Aktion in der Steuerung, sollte es sein:

User.find(params[:id]) 

Auch sollte der Link sein:

<%= link_to 'View Profile', profile_path(user) %> 
+1

, die gearbeitet, danke! In 11 Minuten werde ich Ihre Antwort annehmen können – AlexNikolaev94

Verwandte Themen