2010-11-25 3 views
2

Rails a quelques construit dans des méthodes d'aide pour faire face aux liens (url_for, link_to, auto_link), mais aucun ne exactement ce que je dois:liens personnalisés dans Rails

Je veux que l'utilisateur peut spécifier une URL , et pour moi d'être en mesure de modifier le texte, il apparaît comme. auto_link fait presque ce que je veux, sauf que vous ne pouvez pas changer le texte du lien, et il ne reconnaît pas les liens qui sont tapés comme: stackoverflow.com. Vous devez entrer www.stackoverflow.com

Je veux que l'utilisateur puisse entrer quelque chose comme « stackoverflow.com », et pour moi d'être en mesure de générer html comme ceci:

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

Est y at-il un plugin là-bas qui ajoute des méthodes auxiliaires de liaison?

+0

Pour remplacer l'expression rationnelle de 'auto_link', vous pouvez créer un fichier ruby ​​dans' config/initializers/auto_link_regex.rb' et coller le code comme indiqué dans https://gist.github.com/715149. Modifiez l'expression rationnelle comme vous le souhaitez. Je suis incapable de casser l'expression rationnelle qui fonctionnerait bien pour votre problème. En train d'essayer. – Chirantan

+0

vous pouvez vérifier cette expression rationnelle dans rubular.com, j'ai essayé la version de Chirantan sur quelques cas de test et cela fonctionne –

Répondre

2

Vous pouvez passer un bloc à auto_link et le résultat sera le texte du lien. Par exemple:

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

génère ce code HTML:

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

Et si vous voulez que le texte du lien pour être différent en fonction de ce que l'URL est, vous pouvez faire quelque chose comme:

<% 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 %> 

qui génère:

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

Cela plus les conseils dans les commentaires sur l'ajustement de l'URL regex semblent qu'ils feraient ce que vous voulez.

Questions connexes