Derzeit werden die abgerufenen Daten unter Verwendung von redirect_to
, die GET
verwendet, übergeben. Da in einigen Fällen der Datensatz groß ist, ist der URI zu lang und löst den Fehler Bad Request
aus.Übergeben großer Datenmengen zwischen Controllern in Rails
Alle Online-Forschung sagt, es ist eine schlechte Idee, Daten in GET Körper zu übergeben. Gibt es eine bessere Möglichkeit, Daten an einen anderen Controller weiterzugeben?
Codeblock
def create
response_body = http_get('/data/I/want')
parsed_result = JSON.parse(response_body)
check_response(parsed_result)
redirect_to controller: :search_results, action: :index, results: parsed_result
end
Endpunkt in create
genannt ist die Suchergebnisse so überprüfen müssen, wenn die Ergebnisse leer sind, bevor Umleitung und die Daten übergeben. Ich habe dieses Teil aus dem Codeblock
Setzen Sie es in die db und lesen Sie in der anderen Steuerung? Oder schreibe es vielleicht in eine Datei? – Iceman
@Iceman Ich könnte auch den Endpunkt in der anderen Steuerung nennen, aber es gibt Überprüfungen, die ich anwenden möchte (ich habe sie weggelassen, um den Codeblock klein zu halten), bevor ich auf eine neue Steuerung umschalte, daher eine neue Ansicht – user3241846
Verwenden Sie Memcache, um dies zu tun, wenn Sie nicht aus der DB schreiben/lesen möchten. Eine andere Möglichkeit besteht darin, die Ansicht, die die zweite Controller-Aktion von der ersten Controller-Aktion abruft, zu "rendern", obwohl das einige der 'Arbeit' im zweiten Controller auf ein Modell oder anderswo verschieben müsste, also beide Controller- Aktionen können darauf zugreifen. So habe ich ein ähnliches Problem gelöst. – JosephK