2

Ich versuche, innerhalb eines link_to Anruf zusätzliche HTML einzubetten, wie in diesem Thread Embed additional HTML inside of link_to callRuby on Rails - Einbetten von zusätzlichen HTML innerhalb von link_to Anruf, der I18n enthält

jedoch gefunden, würde ich auch gerne I18n verwenden. Anstatt also diese: anstelle eines fest codierten Show in dem obigen Beispiel

<%= link_to '<i class="icon-search"></i> Show'.html_safe, exercise_path(exercise), :class => 'btn btn-small' %> 

würde Ich mag t(:show) oder I18n.t(:show) verwenden. Ich habe jedoch Probleme, die richtige Syntax herauszufinden. Jede Hilfe würde sehr geschätzt werden.

Antwort

9

Es gibt eine einfachere/sauberere Möglichkeit, zusätzliche Elemente in eine link_to einzubetten, indem die Blocksyntax verwendet wird. Ex.

<%= link_to exercise_path(exercise), :class => 'btn btn-small' do %> 
    <i class="icon-search"></i> 
    <%= t(:show).html_safe %> 
<% end %> 
0

<%= link_to "<i class='icon-search'></i> #{t(:show)}".html_safe, exercise_path(exercise), :class => 'btn btn-small' %>

Verwenden #{} Ruby-Code in Strings einbetten.

+0

Danke, aber wenn ich doppelte Anführungszeichen, wie in Ihrer Antwort verwenden bekomme ich einen Syntaxfehler, und wenn ich einfache Anführungszeichen mit '<% ​​= link_to ' # {t (: show)}'. html_safe, Übungspfad (Übung),: class => 'btn btn-small'%> ', der eingebettete Ruby nicht Arbeit. Irgendwelche Ideen, was ich falsch mache? – diasks2

+0

Entschuldigung, damit meine Lösung funktioniert, müßten Sie 'class = 'icon-search' mit einfachen Anführungszeichen machen. Aber johnernauts Antwort ist sowieso besser;) Ich glaube nicht, dass du in seiner Antwort den html_safe brauchst. – Robin

0

Verwendung roh Funktion genau wie unter Beispiel

<%= link_to raw("<i class='icon-search'>some italic text </i> #{t(:show)}"), exercise_path(exercise), :class => 'btn btn-small' %>