2012-09-25 4 views
5

Dieser meinen Code ist die teilweise für die Darstellung (die Sammlung @parties korrekt erzeugt wird, habe ich getestet,):Passing lokale Variable Teil innen für jede Schleife Schienen 3

 <% @parties.each do |party| %> 
      <div class="item"> 
       <%= render 'parties/party', :object => party %> 
      </div> 
     <% end %> 

Und dies ist der Code, im Teil:

<%= party.name %> 

Allerdings bekomme ich folgende Fehlermeldung:

undefined method `name' for nil:NilClass 

ich an meinem Latein am Ende bin, jemand bitte helfen: - |

Auch dies ist der Code für die Steuerung der Ansicht, welche die teilweise (Der Controller des genannt default_controller) zu machen:

def index 
    @parties = Party.all 
end 

Ist es von Belang, dass dies nicht der parties_controller ist?

Antwort

10

Ich habe so etwas wie unten versucht, und es hat funktioniert

<%= render :partial => 'party', :object => party %> 

und ich kann wie party.name zugreifen. Die lokale Variable ist nach dem Teilnamen benannt, der hier party ist.

Hinweis: Im vorausgesetzt, dass Ihre beide partials sind von parties_controller. Das sollte also funktionieren.

Update: Hier ist, was ive versucht, mit wieder

class PostsController < ApplicationController 
    #... ... 
    def index 
     @posts = Post.all 
     @comments = Comment.all #<---- Loading comments from PostsController 
     #... ... 
    end 
end 

#views/posts/index.html.erb 

<% @comments.each do |comment| %> 
    <%= render :partial=>"comments/comment", :object=>comment %> 
<% end %> 

#views/comments/_comment.html.erb 

<%= comment.body %> 

Und seine worki ng :)

+0

Obwohl der Link http://apidock.com/rails/ActionController/Base/render veraltet ist, bietet es einige gute Beispiele für Render. – Samiron

+0

Die Seite, die die partielle verwendet, wird nicht über den partys_controller gerendert - warum ist das ein Problem? (Der Code für den Controller, der verwendet wird, ruft immer noch alle Parteien aus der Datenbank auf, die @parties = Party.all verwenden) – nicohvi

+0

Ich habe meinen Beitrag mit einem anderen Beispiel aktualisiert. Hier ist das winzige Rails-Projekt, das ich als Beispiel gebe. ** http: //goo.gl/bB9Ky**. Sie können herunterladen und in Aktion selbst sehen :) – Samiron