2016-08-05 15 views
0

In meinem text_area/text_field möchte ich Benutzern die Option geben, fett um einige Wörter hinzuzufügen. Es würde funktionieren wie: Dies hat ein ** fettes ** Wort im Inneren.Rubin auf Schienen. Ersetzen Sie ** Fett ** durch <b>Fett</b> mit gsub()

Ich habe .gsub('**', '<b>').html_safe verwendet Es funktioniert fast, aber das Problem ist, dass die Ausgabe nicht genau richtig ist.

Erwartete Ausgabe: Dies hat eine fett Wort nach innen.

Was ich bekomme: Dies hat ein fettes Wort im Inneren.

html:

<p>This has a <b>bold<b> word inside</b></b></p> 

Wie kann ich nur die Worte, die mit ** erhalten <b> </b>

+0

weitere Informationen zur Verfügung stellen, 'Das hat ** fett ** Wort inside.' diese ist dein Text und du benutzt 'gsub ('**', '')' so wird es 'This has a
bold
word inside.', also gibt es kein Schließen'
'und wenn es wirklich' kommt html' wird es 'This has a Fett Wort innerhalb ' – hgsongra

+0

und eine weitere Frage, woher diese Art von 'Zeichenfolge' erhalten Sie? – hgsongra

+1

Oder Sie können den Page-Down-Editor verwenden. Es ist der gleiche Editor, den Stackoverflow verwendet und seine freie und Open Source – Tonza

Antwort

2

Sie können das Spiel aufzunehmen und es

dem folgenden Block passieren umgeben ist
string = "This has a **bold** word inside" 

string.gsub(/\*\*(\w+)\*\*/) {"<b>#{$1}</b>"} 

#=> "This has a <b>bold</b> word inside" 

Und es funktioniert auch für nachfolgende Übereinstimmungen

string = "This has a **bold** word inside **bold**" 

#=> "This has a <b>bold</b> word inside <b>bold</b>" 

EDIT

Wenn Sie Leerzeichen wollen auch erfassen hinzufügen \s auf die regex

string = "This has a ** bold with spaces ** word inside **bold**" 

string.gsub(/\*\*([\w\s]+)\*\*/) { "<b>#{$1}</b>" } 

#=> "This has a <b> bold with spaces </b> word inside <b>bold</b>" 
+0

Dank @Deepak Diese Arbeit großartig, aber nur Problem ist, wenn ich Satz innerhalb der ** mit Leerzeichen habe, funktioniert es nicht, ex: ** das ist ein Fettdruck Text **. Irgendeine Reparatur für das? – Rubioli

+0

Ersetzen Sie einfach die Capture-Gruppe und fügen Sie Platz (/ \ * \ * ([\ w \ s] +) \ * \ * /) –

+0

@ user6589814 Ein Update dafür hinzugefügt –