2016-07-01 11 views
-1

Von meiner Benutzer-Indexseite möchte ich die Detailseite des Benutzers (mit einem link_to-Tag) öffnen und die Fehlermeldung Keine Route erhalten {: action => "show",: controller => "users",: id => nil} fehlender Schlüssel: [: id]link_to user_path (@user) nicht öffnende Seite

Wenn ich die URL eingeben .../Benutzer/ID (zB Benutzer/1) bekomme ich die richtige Seite . Versucht viele Alternativen für das link_to-Tag. Was sollte es sein?

Dies ist der zugehörige Code:

<ol class="list-group"> 
    <% @users.each do |user| %> 
     <li class="list-group-item clearfix"> 
      <h3 class="pull-right"><small class="text-uppercase">created </small><%= user.created_at.to_time %></h3> 
      <h2 class="h3"><%= user.first_name %> <%= user.last_name %><small> <%= user.username %></small></h2> 
      <%= link_to "details", user_path(@user), class: "pull-right" %> 
      <h4><%= user.email %></h4> 
     </li> 
    <% end %> 
</ol> 

In meinem Controller habe ich:

def show 
    @user = User.find(params[:id]) 
end 

Und route.rb: resources :users

+0

Warum Sie extra Schleife ausführen, um einzelne Daten vom Objekt zu extrahieren. – vipin

+0

@vipin: nicht sicher, was Sie mit extra Schleife meinen. Führe eine Schleife auf der Indexseite aus, um alle Benutzer aufzulisten (jeweils in Listengruppenelement); dann von einzelnen Benutzer öffnen Benutzerdetails Seite. –

+0

Ihr oben ist show.html.erb – vipin

Antwort

0

in Ihrem Code haben Sie @user und geschrieben ist kein Wert zugewiesen. Da der Standardwert der Instanzvariablen nil ist, wird nur der Wert nil übergeben, anstatt einen Fehler zu verursachen.

ändern

<%= link_to "details", user_path(@user), class: "pull-right" %> 

zu

<%= link_to "details", user_path(user), class: "pull-right" %> 

Es wird funktionieren.

1

versuchen Sie dies: in Sie zeigen Aktion definieren Sie @ user, bedeutet nur einzelne Benutzer, so dass es keine Schleife für das Extrahieren von Daten aus Objekt.

<ol class="list-group"> 
      <li class="list-group-item clearfix"> 
       <h3 class="pull-right"><small class="text-uppercase">created </small><%= @user.created_at.to_time %></h3> 
       <h2 class="h3"><%= @user.first_name %> <%= @user.last_name %><small> <%= @user.username %></small></h2> 
       <%= link_to "details", user_path(@user), class: "pull-right" %> 
       <h4><%= @user.email %></h4> 
      </li> 
    </ol> 
+0

das funktioniert für mich ..... danke –

+0

Arbeit für mich auch .. !! thnx –