2012-04-08 9 views
0

Ich bin mir sicher, dass dies mit der Komplexität von Sprees Laden zusammenhängt.Spree hat keinen Zugriff auf die Datenbank von einem partiellen?

Aber mein Hauptproblem ist, dass Spree kein Land laden kann. Für mich ist es Country.find (214). Wenn ich es in meiner Remote-Konsole überprüfe, finde ich keine Sorge. Alle Länder, alle Staaten sind da.

Aber wenn ich versuche, Country.find (214) in der Steuerung für states_controller # Index zu setzen, oder eine before_load Methode machen, die das tut, oder es in der Ansicht setzen sich, es gibt immer:Error (Couldn't find Country with ID=214).

Verrückt, richtig? Ich kann mir nicht vorstellen, was ich zu diesem Zeitpunkt tun soll. Wenn ich Country = Country.first. Ich kann es irgendwie funktionieren lassen, indem ich einfach eine leere Vorlage von index.haml lade. Das bedeutet, dass eine Art Land existiert, in das es eindringt.

Wer hat irgendwelche theoretischen Überlegungen, warum das passiert? Und wie könnte ich es umgehen können?

+0

Ich würde die SQL überprüfen, die gerade ausgeführt wird - vielleicht wird ein Gültigkeitsbereich angewendet. –

+0

Es ist sqlite3. Und der gesamte Rest der Anwendung wird vollständig geladen. Aber ich stelle mir vor, dass Ihr Kommentar etwas Spezifischeres ist. Hast du Erfahrung mit Spree? Wo finden Sie diesen Anwendungsbereich? – Trip

+0

Ich habe es nie in meinem Leben benutzt, aber die generierte SQL zu überprüfen ist, wo ich anfangen würde zu suchen. –

Antwort

1

Entschuldigung das ist ein bisschen spät, aber ich stolperte auf Ihren Beitrag und fand heraus, was das Problem verursacht hat.

Land 214 ist USA, und aus irgendeinem Grund ist Spree standardmäßig auf dieses Land eingestellt. Wenn Sie also keine USA geladen haben, werden Sie auf dieses Problem stoßen.

um es zu bekommen, werden Sie ein Standard-Land in Ihrem initializer manuell einrichten müssen:

Spree.config do |config| 
    Spree::Config.default_country_id = Spree::Country.find_by_name("Singapore").id 
end 

Ich hoffe, dass Sie dies jetzt aber gelöst haben. :)

+0

Wow, danke eine Tonne. – Trip

0
Its Pretty much easy in Spree2.0.0 should work for every Spree version too. 

Spree.config do |config| # Set Country name and Currency like this(Note: you will need to run 'rake db:seed'  before this. Change country name in Spree::Country.find_by_name('United Kingdom') replace united kingdom to your desire one) 
config.currency = 'EUR' 
country = Spree::Country.find_by_name('United Kingdom') 
config.default_country_id = country.id if country.present? 

# Sie können auch folgende Optionen festlegen.

config.site_name = "Teamer Store" 
config.override_actionmailer_config = true 
config.enable_mail_delivery = true 

end