如何防止link_to在Rails的URL参数中转义斜线?
时间:2020-03-06 14:54:03 来源:igfitidea点击:
有这条路线:
map.foo 'foo/*path', :controller => 'foo', :action => 'index'
对于link_to
调用,我得到以下结果
link_to "Foo", :controller => 'foo', :path => 'bar/baz' # <a href="/foo/bar%2Fbaz">Foo</a>
即使使用:escape => false
,也直接调用url_for
或者foo_url
,也给我相同的URL:
foo_url(:path => 'bar/baz', :escape => false, :only_path => true) # /foo/bar%2Fbaz
我希望得到的URL是:/ foo / bar / baz
有没有解决此问题的方法而无需修补导轨?
解决方案
与其传递路径字符串,不如给它一个数组。
link_to "Foo", :controller => 'foo', :path => %w(bar baz) # <a href="/foo/bar/baz">Foo</a>
如果路线文件中没有该路线,则相同的link_to会创建以下内容:
# <a href="/foo?path[]=bar&path[]=baz">Foo</a>
我唯一可以找到此文件的地方在这张票中。
我们为何需要使用该路径生成URL的任何原因?
仅定义一个覆盖该URL的额外路由会更干净。