-Update vorhanden ist: So, hier ist die Quelle
def link_to(*args, &block)
if block_given?
options = args.first || {}
html_options = args.second
link_to(capture(&block), options, html_options)
else
name = args[0]
options = args[1] || {}
html_options = args[2]
html_options = convert_options_to_data_attributes(options, html_options)
url = url_for(options)
href = html_options['href']
tag_options = tag_options(html_options)
href_attr = "href=\"#{ERB::Util.html_escape(url)}\"" unless href
"<a #{href_attr}#{tag_options}>#{ERB::Util.html_escape(name || url)}</a>".html_safe
end
end
Wie wir von der Quelle sehen, dieses Verhalten ist von Entwurf .
Sie können eine von zwei Lösungen versuchen, ich habe sie nicht versucht, aber sie sollten
1.) arbeiten Versuchen Sie, den Anruf tätigen innerhalb eines Anrufs an das Gateway #raw:
<%= link_to "link", raw(gateway_index_url(developer: @item.developer.api_key, tracker:"email", url:@product.url)) %>
Das kann Ihr spezifisches Problem lösen, ein zweiter Ansatz, während ein bisschen mehr Brute-Force auch funktionieren sollte ...
2.) Wenn Sie es (den ganzen href) zurück konvertieren möchten, können Sie ... verwenden CGI :: unescape_html:
<%= CGI::unescape_html(link_to "link", gateway_index_url(developer: @item.developer.api_key, tracker:"email", url:@product.url)) %>
Viel Glück, hoffentlich hilft das.
Update 2: Fester Aufruf von CGI Unescape, wurde mit "." wenn es "::" sein sollte und Formatierung beheben. Forgot to handle for # 1
Der generierte Markup ist der richtige Weg, um eine Link-URL mit Et-Zeichen in sie zu schreiben. Browser werden URLs mit nicht aufgedecktes kaufmännisches Und-Zeichen verstehen, aber sie sind technisch inkorrekt. Wenn Sie Quelltext in Firefox anzeigen und den HTML-Code für eine Verknüpfung mit nicht aufgefangenen Et-Zeichen suchen, werden die Et-Zeichen als Fehler angezeigt. –
Sie meinen, dass/foo? A = 1 & b = 2 ist falsch und sollte immer als/foo geschrieben werden? A = 1 & b = 2? – EricLarch
Genau. Wie in [diese Antwort] (http://stackoverflow.com/a/1911482/578288) beschrieben, sollten alle Elementattribute in HTML '&', '" ',' '' und ein paar andere Zeichen enthalten href' Attribut des 'a' Elements ist keine Ausnahme. –