Ich habe eine Web-App, in der ich auch eine ziemlich komplexe Art von Blog habe. Für diesen Blog benutze ich sowohl RedCarpet als Markup-Sprache als auch eine hausgemachte Markup-Sprache, das ist sehr nützlich.Rails: Render Inhalt in Post-Prozessor (Modell/Helfer Ausgaben)
In meiner hausgemachten Markup-Sprache rufe ich Produktansichten und andere Teiltöne aus der App. Ich verwende das in zwei verschiedenen Modellen: BlogPost und Artikel.
@blog_post.unprocessed_content = "Today I would like to show you this **cool** product that we offer: [[PRODUCT#ID:123]]."
Die [[PRODUCT # ID: 123]]
Zum Beispiel könnte eine Blog-Post so etwas wie meine eigene Markup-Sprache und kühlen ist RedCarpet. Ich benutze eine render_content Methode aus ApplicationHelper wie folgt aus:
processed_content = render_content(@blog_post.unprocessed_content)
die würden Ausgangs
processed_content = "Today I would like to show you a <strong>cool</strong> product that we offer: <h3>Apple</h3><img src="apple.jpg"><p>Apple is a nice fruit.</p>. Price: 1 USD."
Der "apple" Teil geholt wird aus einer eine View-Teil.
Das Verfahren in ApplicationHelper verwendet zum Beispiel: - machen partials/blog_post/product_item_with_pic - RedCarpet Markup
Ich schreibe alle Artikel/Blog-Posts in einem Markup/unverarbeitetem Zustand, aber es wäre total Sinn pre machen -process dieser Inhalt, wenn ich veröffentliche und render_content() auf :before_save
geladen haben.
Das Problem
Grundsätzlich würde, Ich mag diese verwenden: BEFORE_SAVE aus dem Blogpost und Artikel Modell aber dann laufe ich in das Thema Helfer Sachen zu versuchen, aus einem Modell zu tun, und es ist alles chaotisch bekommt .
Ich habe versucht, zu verwenden:
ApplicationController.helpers.render_content(@blog_post.unprocessed_content)
aber dann kann es nicht die Sicht-partials wie/blog_post/product_item_with_pic finden. Es fühlt sich an, als würde ich einfach weiter auf solche Probleme stoßen.
Im Moment habe ich eine sehr hässliche Lösung (das funktioniert) und es ist die Vorverarbeitung in der Ansicht, wenn die Ansicht geladen ist. Grundsätzlich, in admin :: blog_post # show rufe ich render_content auf und führe dann einen Speichervorgang durch. Ja, es ist hässlich.
Meine Fragen
- Was die eleganteste Art und Weise zu lösen sein würde?
- Wenn es zumindest nicht wirklich einen guten Weg gibt, wie kann ich auf Teiltöne zugreifen, wenn ich den ApplicationHelper so aus dem Modell herausrufe?
Es ist nicht ganz klar, was Ihr 'render_content' tatsächlich tut. – EugZol
Sie haben absolut Recht, es war nicht sehr klar. Ich habe es jetzt bearbeitet. – Christoffer