Mühe auf die Wiedergabe einer Vorlage übergeben eine lokale variable

Ich bin mit Ruby on Rails 3 und ich würde gerne Rendern eines templates ( show.html.erb ), die eine lokale variable.

In RAILS_ROOT/views/users/show.html.erb ich habe

Name: <%= @user.name %>
Surname: <%= @user.surname %>

Habe ich auch eine Seite mit controller zu handhaben Seiten und in der application_controller.rb eine istance von @current_user. Eine Seite aufgerufen wird user, so in RAILS_ROOT/views/pages/user.html.erb ich habe

<%= render :template => "users/show", :locals => { :user => @current_user } %>

Der obige code nicht funktioniert (ich bekomme diese Fehlermeldung: RuntimeError in Pages#user, Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id), aber das funktioniert:

<%= render :template => "users/show", :locals => { :user => @user = @current_user } %>

Ich denke, es ist nicht ein guter Ansatz zu "überschreiben" die @user variable. Dies ist, weil, zum Beispiel, wenn ich brauche zu erinnern @user nach oben 'render' - Anweisung wird nicht mehr funktionieren.

Also, was ist die Lösung, um show.html.erb?


Ich versuchte auch

<%= render :template => "users/show", :locals => { @user => @current_user } %>
<%= render :template => "users/show", :locals => { :object => @current_user, :as => @user }

aber diese funktionieren nicht.


UPDATE

Wenn in pages_controller.rb ich diese

def user
  @user ||= @current_user
end

wird es funktionieren und in der Ansicht Dateien können Sie einfach

<%= render :template => "users/show" %>

Sowieso, entdeckte ich, dass ich diese Fehlermeldung (siehe unten für mehr info):

ActionController::RoutingError in Pages#user
No route matches {:action=>"destroy", :controller=>"users"}

Der Fehler wird generiert, aus dieser form - Anweisung befindet sich in einem teilweise geladen show.html.erb:

<%= form_for(@user, :url => user_path) do |f| %>
  ...
<% end %>
InformationsquelleAutor user502052 | 2011-02-16
Schreibe einen Kommentar