2016-07-16 6 views
0

Hallo Ich habe ein paar Stücke von Codes, die schlecht geschrieben sind. Ich weiß nicht, wie ich das machen soll.Arbeiten mit mehreren Tabellen und Zuweisen von Werten zu Array in Controller und Anzeigen in Ansichten

Zum einen gibt es einen Link, der gut arbeitet:

<td><%= link_to 'Show', bidders_assignments_path(:assignment_id => assignment.id), :method => :post %></td> 

, die an die Methode Bieter in assignment_controller verbinden wird:

def bidders 
    @bids = Bid.where(bidders_params).find_each 
    #I suspect there's error in the lines below 
    @bids.each do |bid| 
    @bidders = User.where(user.id => bid.user_id).find_each 
    end 
end 

def bidders_params 
    params.permit(:assignment_id) 
end 

Sobald die @bidders Array mit Daten gefüllt ist, wird es aufgeführt werden auf der Aussicht:

Ich vermute, der Fehler ist in der Füllung von @bidde rs Array mit Daten, aber ich kann mir nicht sicher sein, deshalb bin ich hier. Danke im Voraus!

+0

Was ist der Fehler? Ich vermute, es ist dies '@bids = Bid.where (bidders_params) .find_each', weil es einen Block –

+0

@ j-dexx Ich habe die Def-Bieter nach Arup Rakshit Vorschlag geändert zu: ' def Bieter bidders_ids = Bid. wo (bidders_params) .pluck (: user_id) @bidders = User.where (id: bidders_ids) end' Jetzt gibt es keinen Fehler, aber keine Daten werden angezeigt. Es gibt kein Problem mit: '@bids = Bid.where (bidders_params) .find_each' Das Problem ist die Linie, nachdem ich glaube. – Benjamin

+0

Wie stellen Sie fest, dass es kein Problem gibt? Könnte es sein, dass es in der Datenbank einfach keine Daten gibt, die den übergebenen Argumenten entsprechen? –

Antwort

1

Sie müssen eine SQL IN Abfrage durchführen. Das wird fix Code:

def bidders 
    bid_ids = Bid.where(bidders_params).pluck(:user_id) 
    @bidders = User.where(id: bid_ids) 
end 

Verwenden Instanzvariablen belichten Daten von der Steuerung zu Ansicht. Wenn Sie eine Variable für temporäre Berechnungen benötigen, verwenden Sie lokale Variablen.

+0

Danke, aber ich denke nicht, dass das der Fehler ist. Ich denke, das Problem ist mit dem '<% @ bidders.each do | bidder | %> 'part – Benjamin

+0

Ich glaube, ich habe die Array-Bieter nicht korrekt deklariert. Es könnte keine Daten innerhalb der Bieter geben. – Benjamin

Verwandte Themen