2010-11-25 9 views
2

Rails hat ein paar in Hilfsmethoden gebaut mit Links für den Umgang (url_for, link_to, auto_link), aber keiner tun genau das, was ich brauche:Benutzerdefinierte Links in Rails

Ich möchte der Benutzer eine URL in der Lage sein zu spezifizieren und für mich in der Lage zu sein, den Text zu ändern, als der es erscheint. auto_link macht fast das, was ich will, außer dass Sie den Linktext nicht ändern können und er erkennt keine Links wie: stackoverflow.com. Sie müssen eingeben www.stackoverflow.com

Ich möchte der Benutzer so etwas wie „stackoverflow.com“ in der Lage sein zu geben, und für mich in der Lage sein, html wie folgt zu generieren:

<a href="http://www.stackoverflow.com">Username</a> 

Ist gibt es ein Plugin da draußen, das zusätzliche Link-Helfer-Methoden hinzufügt?

+0

Um die Regex von 'auto_link' zu überschreiben, können Sie eine Ruby-Datei in' config/initializers/auto_link_regex.rb' erstellen und Code wie angegeben https://gist.github.com/715149 einfügen. Ändern Sie die Regex wie Sie möchten. Ich bin jedoch nicht in der Lage, die Regex zu knacken, die für Ihr Problem funktionieren würde. Versuche immer noch. – Chirantan

+0

können Sie überprüfen, dass regexp in rugular.com, ich habe Chirantan-Version auf ein paar Testfälle versucht und es funktioniert –

Antwort

2

Sie können einen Block an auto_link übergeben, und das Ergebnis davon ist der Linktext. Zum Beispiel:

<% str = "something like http://stackoverflow.com would be the input" %> 
<%= auto_link(str) do |url| 
     "Username" 
    end 
%> 

erzeugt HTML:

something like <a href="http://stackoverflow.com">Username</a> would be the input 

Und wenn Sie den Link-Text, anders zu sein, je nachdem, was die URL war wollten, könnten Sie so etwas wie:

<% str = "something like http://stackoverflow.com, and another http://stackexchange.com url" %> 
<%= auto_link(str) do |url| 
    if url.match(/overflow/) 
    "Username" 
    else 
    "Something" 
    end 
end %> 

die erzeugt:

something like <a href="http://stackoverflow.com">Username</a>, and another <a href="http://stackexchange.com">Something</a> url 

Dies plus die Tipps in den Kommentaren zum Anpassen der URL Regex scheinen, als würden sie tun, was Sie wollen.

Verwandte Themen