ich ein Model callback verwenden würde die HTML beim Speichern des Hinweises zu generieren:
class Note < ActiveRecord::Base
before_save :generate_html
# ...other stuff...
def generate_html
# 'html' is a field whose value is a HTML version of the 'content' field
self.html = self.content.gsub(/\[{2}([a-z]*?)\]{2}/) { |match| link_to $1, "/notes/show/#{$1}" }
# generate other html...
end
end
Um die Notiz tatsächlich an einer URL wie /notes/show/something
anzuzeigen, müssen Sie Rails mitteilen, wie man es akzeptiert (Rai ls 'show' Routen erwarten normalerweise die ID des Datensatzes, den Sie anzeigen. In Ihrem Notes-Modell, geben Sie so etwas wie diese (Ich gehe davon aus, dass Sie ein Feld haben url
genannt, die eine URL freundliche Titel ist):
def Note.find_by_id_or_url id
Note.find :first, :conditions => ['id = ? or url = ?', id, id]
end
Und dann in den Notes-Controller, fügen Sie so etwas wie dies für die show
Aktion:
@note = Note.find_by_id_or_url(params[:id])
persönlich würde ich empfehlen nicht Ihren eigenen Syntax-Parser zu schreiben und nur so etwas wie Markdown verwenden.
wäre gsub nicht besser? - Ersetzt die Zeichenfolge, anstatt sie nur anzupassen.Hinzufügen von virtuellen Attributen und dergleichen scheint wie eine Fliege mit einem Klumpen Hammer zu zerschlagen, zumal diese Art von Logik ist, die in die Ansicht gehören sollte, möglicherweise innerhalb einer Hilfsmethode. –