2 Stimmen

Mehrere Modelle auf einer Index-Seite

Gibt es eine Möglichkeit, mehrere Modelle auf einer Indexseite aufzulisten?

Ich habe 4 Modelle: Benutzer, Agenturen, Bevollmächtigte und Mentoren, die ich gerne auf einer Indexseite auflisten möchte.

Gibt es einen spezifischen Prozess, dem ich folgen könnte?

0voto

davidcelis Punkte 3127

Sie können einfach nach all diesen in der Indexaktion des Controllers abfragen:

class MyController < ApplicationController
  def index
    @users = User.all
    @agencies = Agency.all
    @authorized_people = AuthorizedPerson.all
    @mentors = Mentor.all

    respond_to do |format|
      format.html
    end
  end

  # ...
end

Und sie in Ihren Ansichten wie gewohnt referenzieren:

<% @agencies.each do |agency| %>

<% end %>

<% @users.each do |user| %>

<% end %>

0voto

Kosmonaut Punkte 2004

Rubybenutzer,

Ja, das ist völlig normales Verhalten. In Ihrem Controller, wann immer Sie eine Variable mit @meinevariable angeben, handelt es sich um eine Instanzvariable, die im Bereich des Controllers und der Ansicht verfügbar ist. Eine Variable ohne das @ ist eine lokale Variable, die nur innerhalb dieser Methode verfügbar ist.

Also, wenn Sie in Ihrem Controller Folgendes tun:

Klasse Foos < ApplicationController
    def index
        @foos = Foo.all
        @bars = Bar.all
    end  
 end

Können Sie dann auf @foos und @bars in Ihrer Ansicht verweisen.

Meine Foos und Bars

   <% @foos.each do |f| %>

   <% end %>

   foo

    f.name

   <% @bars.each do |b| %>

   <% end %>

   bar

    b.name

Jetzt, um die Dinge sauberer zu halten, möchten Sie vielleicht überlegen, ein Partial zu verwenden. Erstellen Sie eine Datei namens _bars_index.html.erb und kopieren Sie den Tabellencode mit den Bars darin.

Ersetzen Sie es mit

<%= render "bars_index" %>

und jetzt ist Ihr Code schön und ordentlich und leicht nachvollziehbar.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X