Ich habe zwei Modelle in meiner Anwendung, die Verwendung des Friendly_id Juwel machen (es so, dass der App-URLs sind beschreibend und benutzerfreundlich.Neu installierte Ruby-Gem Friendly_Id aktualisiert Nicht Live-App, die Via Heroku
Eingesetzt ist Ein Politiker Modell:
class Politician < ActiveRecord::Base
has_many :interests
has_many :issues, through: :interests
validates :name, :political_party, :title, :slug, presence: true
extend FriendlyId
friendly_id :name, use: :slugged
end
und eine Ausgabe Modell:
class Issue < ActiveRecord::Base
has_many :interests
has_many :politicians, through: :interests
validates :name, :slug, :keywords, presence: true
extend FriendlyId
friendly_id :name, use: :slugged
end
Zurück Geschichte: Die App war nicht von Anfang an mit dem Juwel nach Heroku geschoben. Ich habe die App erstellt und sie auf Heroku verteilt, und dann bin ich auf das Juwel Friendly_ID gestoßen. Nachdem ich es entdeckt hatte, installierte ich den Edelstein in meinem Gemfile, optimierte die oben genannten Modelle und Controller und es funktioniert wunderbar auf meinem lokalen Server.
Ich dachte, ich war alles bereit. Ich habe meine Daten auf Heroku neu gesetzt und hochgedrückt, aber die Änderungen werden auf der Live-Site nicht angezeigt. Und so stattdessen die Schnecke Feld wie so für jedes Modell der Verwendung:
www.mysite.com/politicians/barack-obama
www.mysite.com/issues/economy
Ich sehe nach wie vor:
www.mysite.com/politicians/7 (Barack Obamas Politiker ID-Nummer)
www.mysite.com/issues/3 (die ID-Nummer für die "Economy" Ausgabe)
Mehr Back Story:
ich the gem's docs sah und sogar a few questions here auf Stackoverflow, und sie alle sagten, dass, wenn Sie den Edelstein zu einer bereits bestehenden App sind das Hinzufügen, dann für jedes Modell diesen Code in der Heroku Konsole auszuführen, die das friendly_id gem angewendet wird zu:
heroku run console
Und dann:
Politician.find_each(&:save)
Issue.find_each(&:save)
, die nicht funktioniert: -/Meine App ist mit semantischen freundlichen URLs noch nicht aktualisiert. Ich sollte auch hinzufügen, dass ich zuerst das Hilfsmodul des Edelsteins benutzt habe. Und so hatte ich:
friendly_id :name, use: [:slugged, :history]
Aber jemand on this StackOverflow thread erwähnt die „Helfer“ Schlüsselwort entfernen (? Und dann erneut hinzufügen nach dem Speichern), denn das kann er von der Aktualisierung auf Heroku werden verhindert. Ich habe das noch nicht versucht (das "Helfer" Schlüsselwort nach dem Speichern wieder hinzufügend, aber ich wollte meine Frage stellen, bevor ich einen anderen Tag des Versuchs verschwendet habe und es nicht funktioniert.
Hilfe bitte :-)
Haben Sie Ihre heroku-Datenbank migriert, um die Spalte "slug" hinzuzufügen? Funktioniert alles in Ihrer lokalen Umgebung: Produktionsumgebung sowie lokal: Entwicklung? – eeeeeean
Ja, alles funktioniert perfekt, wenn ich die App lokal auf dem Server auf meinem Laptop starte. Was ist der Unterschied zwischen "lokal: Produktionsumgebung" und "lokal: Entwicklung"? –
Und ja, ich migrieren meine heroku db durch Ausführen: heroku run rake db: migrieren –