Frage

Ich habe diesen code-block:

users = Array.new
users << User.find(:all, :conditions => ["email like ?", "%foo%"])
users << User.find(:all, :conditions => ["name like ?", "%bar%"])
users.flatten!
users.uniq!
puts users.to_json :include => [:licenses]

Wenn ich es mit einem Skript/Konsole, gibt es genau das, was würden Sie denken, es sollte eine JSON-Darstellung des Arrays von Nutzern, die ich gefunden habe, abgeflacht, und uniquified.Aber ausgeführt, dass dieselbe Zeile von code als Teil eines search_for_users Methode, ich bekomme diese Fehlermeldung

TypeError in ControllerName#search_for_users
wrong argument type Hash (erwartet, Daten)

und die Zeile verwiesen wird, ist die Zeile, die mit .to_json nennen.

Es ist unverständlich, weil mir der code ist wörtlich die gleichen.Der einzige Unterschied ist, dass, wenn ich laufen gehe es in der Konsole, ich bin die Eingabe der Bedingungen manuell, aber in meiner Methode, ich bin ziehen Sie die Abfrage aus params[:query].Aber, ich habe nur versucht, hart codierten Abfragen und bekam das gleiche Ergebnis, so dass ich nicht denke, dass ist das problem.Wenn ich entfernen Sie die :include, Ich sehe keine Fehler, aber ich habe auch nicht die Daten, die ich will.

Jemand eine Idee was das Problem sein könnte?

War es hilfreich?

Lösung

Es gibt ein paar Plugins und Edelsteine, die .to_json dazu führen kann, wenn in Ihrem Controller enthalten scheitern. Ich glaube, dass die Twitter-Juwel ist einer von ihnen (lief in ein Problem mit diesem eine Weile zurück).

Haben Sie "schließen [etwas]" oder "require [etwas]" in diesem Controller?

Wenn nicht, würde ich vorschlagen, vorübergehend alle Plugins Entfernen Sie verwenden zu beheben, etc.

Schließlich, was passiert, wenn man die gesamte Controller-Aktion mit einfach ersetzen: % W (1 2 3 4 5) .to_json

Das sollten Sie nach unten helfen Pin, was ausfällt.

Andere Tipps

Wenn code in tests oder die Konsole verhält sich anders aus der Produktion die Umwelt (das ist eine Vermutung...Sie laufen könnte Ihre Website in development mode), diese fordert eine lade-Reihenfolge Problem.In der Produktionsumgebung, alle Modelle und Controller sind vorinstalliert, das in anderen Umgebungen, in die Sie geladen werden träge, wenn nötig.Starten Sie Ihre Konsole mit RAILS_ENV=production ./script/console und sehen Sie, ob Sie den Fehler reproduzieren können auf diese Weise.Als cscotta erwähnt, gibt es ein paar Edelsteine und Bibliotheken, stören können .to_json, zunächst zu schweigen von der Funktionalität, die Sie erhalten, wenn Sie require 'json'.Ich persönlich lief in einige Probleme damit.

Hoffe, das hilft

Seb

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top