Frage

Das will_paginate Juwel auf meiner Version von Oracle gebrochen. Der Standard paginate_by_sql Methode im WillPaginate Modul ist ein zusätzliches ‚AS‘ in eine Abfrage einfügen und so dass es zum Scheitern verurteilt.

Der Code selbst leicht fixiert ist, aber ich bin der beste Weg, nicht sicher, Rails zu bekommen meinen Wechsel zu holen.

Ich will nicht den Code in dem Juwel selbst ändern, als dass mein Code auf anderen Maschinen gebrochen verlassen wird.

Ich habe versucht, die Schaffung eines lib / test.rb Datei enthalten:

module WillPaginate
  def paginate_by_sql
    (my code goes here)
  end
end

und von environment.rb erfordern, aber es ist nicht meine Änderungen aufnimmt. Ich habe auch versucht, es von Controllern / application.rb erfordern, aber auch hier nicht meine Änderungen verwarnt.

Zur Zeit habe ich es durch Überschreiben der Methode innerhalb des spezifischen Modells arbeiten selbst, aber das ist ein bisschen wie ein Hack, und bedeutet, dass ich es nicht auf einen der anderen Modelle in diesem Projekt verwenden können.

Ich bin sicher, es ist eine einfache Möglichkeit, dies zu tun, aber ich bin kein Glück haben sie das Aufspüren der Verwendung von Google.

War es hilfreich?

Lösung

Was Sie tun, wird funktionieren, aber Ihr Code muss wie folgt aussehen:

module WillPaginate
  module Finder
    module ClassMethods
      def paginate_by_sql(sql, options)
        # your code here
      end
    end
  end
end

Mit anderen Worten, gehen Sie in finder.rb, löscht alles außer den Modul-Header und die Methode, die Sie außer Kraft setzen wollen, dann in eine Datei im lib speichern und schließt in environment.rb. Voila, Instant-Affen-Patch!

Andere Tipps

Eine prägnante Lösung:

WillPaginate::Finder::ClassMethods.module_eval do
 def paginate_by_sql sql, options
   # Your code here
 end
end

Setzen Sie den den Code in eine initializer Datei in config / initializers. Dies ist der richtige Ort, um Code zu setzen, die ausgeführt werden muss, wenn die Umgebung geladen wird. Es ist auch besser organisiert Ihren Code, so dass jede Absicht der Datei klarer, so wird Fehler leichter auf der Spur. Nicht verunstalteten environment.rb!

Ok, ich werde einfach diese leichter für Leute wie mich, die entlang und immer noch kämpfen, um ein bisschen kommen, nachdem die anderen Antworten zu lesen.

Erste , um den Code finden, die Sie bei der Suche nach der Codezeile auf der GitHub Repo ändern wollen (man könnte dies mit hebeln ) möchten Sie in den Edelstein ändern, und wählen Sie dann Code auf die an Stelle von Issues links

eingeben Bild Beschreibung hier

eingeben Bild Beschreibung hier

Weiter Kopieren Sie den Inhalt des Moduls wollen Sie und es in ein treffend benannt .rb Datei in Ihrer config / initializers Ordner speichern ändern. Hier ein Beispiel:

module Forem
  module TopicsHelper
    def link_to_latest_post(post)
      text = "#{time_ago_in_words(post.created_at)} #{t("ago_by")} #{post.user}"
      link_to text, forum_topic_path(post.topic.forum, post.topic, :anchor => "post-#{post.id}")
    end
  end
end

Nun ändern Sie es an:

Forem::TopicsHelper.module_eval do
  def link_to_latest_post(post)
    text = "#{time_ago_in_words(post.created_at)} #{t("ago_by")} #{post.user}"
    link_to text, forum_topic_path(post.topic.forum, post.topic, :anchor => "post-#{post.id}")
  end
end

Nun, ggf. weitere Änderungen an den Code und starten Sie Ihren Server.

gehen Sie weg!

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