5 Stimmen

Wie kann ich verhindern, dass link_to von escaping Schrägstriche in URL-Parameter in Rails?

Mit dieser Route:

map.foo 'foo/*path', :controller => 'foo', :action => 'index'

Ich habe die folgenden Ergebnisse für die link_to aufrufen

link_to "Foo", :controller => 'foo', :path => 'bar/baz'
# <a href="stackoverflow.com/foo/bar%2Fbaz">Foo</a>

Aufruf von url_for o foo_url direkt, auch mit :escape => false geben Sie mir die gleiche URL:

foo_url(:path => 'bar/baz', :escape => false, :only_path => true)
# /foo/bar%2Fbaz

Ich möchte, dass die resultierende URL lautet: /foo/bar/baz

Gibt es eine Möglichkeit, dies ohne Parcheando Schienen zu umgehen?

4voto

Gordon Wilson Punkte 25922

Anstatt path eine Zeichenkette zu übergeben, geben Sie ihm ein Array.

link_to "Foo", :controller => 'foo', :path => %w(bar baz)
# <a href="http://stackoverflow.com/foo/bar/baz">Foo</a>

Hätten Sie die Route nicht in Ihrer Routendatei, würde der gleiche link_to stattdessen dies erzeugen:

# <a href="http://stackoverflow.com/foo?path[]=bar&path[]=baz">Foo</a>

Die einzige Stelle, an der ich dies dokumentiert finden konnte, ist in dieses Ticket .

-3voto

madlep Punkte 43822

Gibt es einen Grund, warum Sie die URL mit diesem Pfad generieren müssen?

Es wäre sauberer, einfach eine zusätzliche Route zu definieren, die diese URL abdeckt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X