2016-10-25 2 views
0

Ich habe eine Funktion:(Rails) Pass-Array in teilweise als Sammlung

def self.get_component(component_name, properties{}) 
    render :partial => component_name :collection => properties{} 
end 

Das bedeutete eine teilweise aus dem Argument ‚component_name‘ zu machen, und dann die Anordnung von Eigenschaften für die Komponente gelangen über eine Sammlung.

Ich habe eine Klasse Berufung das Verfahren mit

get_component('members_card/display', properties{member_name => "Jason"}) 

, die ich eigentlich noch nicht überprüft, aber ich habe gesagt, ich nicht wirklich haben, um die Daten in dem Array explizit festgelegt. Ich habe endlich die Teil:

<div class="members-card"> 
    <div class="container"> 
     <div class="card"> 
      <img class="card__profile" alt="display name" src=""> 
      <div class="card__details"> 
       <h4 class="card__title"> <%= ??? %> </h4> 
      </div> 
     </div> 
    </div> 
</div> 

Aber ich habe keine Ahnung, wie man tatsächlich die Daten in dem Array aufrufen i als eine Sammlung gesetzt haben für die teilweise, so dass ich den Namen füllen könnte.

Ich sehe Dinge wie @properties oder properties.member_name, wäre eine davon die richtige Lösung, und wenn ja, warum?

+0

die Sammlung, die Sie zu senden sind, ist ein Hash. Tatsächlich verwenden wir Instanzvariablen wie [at] posts oder [at] Eigenschaften und übergeben diese an die partielle Sammlung. Am vorderen Ende müssen Sie den Hash mit dem Schlüssel aufrufen. Pls gehen durch diese [link] (http://guides.rubyonrails.org/layouts_and_rendering.html) –

+0

Ich sehe Sie kommen aus einem PHP-Hintergrund ... "Arrays" in PHP sind wie eine unscharfe Mischung zwischen Arrays und Hashes . Lerne den Unterschied zwischen einem 'Array' und einem' Hash', und dies in Ruby (oder praktisch jeder anderen Nicht-PHP-Sprache) macht viel mehr Sinn :) –

+0

Das macht Sinn! Ich hatte den Eindruck, dass assoziative Arrays in jeder Sprache eine Sache waren, aber ich denke, ich war zu lange in der PHP-Blase. – user3062123

Antwort

0

Verwendung so etwas wie:

properties = ['a','b','c'] 
render partial: 'my_partial', locals: { 
    my_collection: properties 
} 

Dann in my_partial.html.erb:

<% my_collection.each do |collection| %> 
... 
<% end %> 
Verwandte Themen