2008-09-29 41 views
5

Có tuyến đường này:Làm cách nào để ngăn chặn link_to thoát khỏi các dấu gạch chéo trong các tham số URL trong Rails?

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

tôi có kết quả như sau cho link_to gọi

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

Calling url_for hoặc foo_url trực tiếp, ngay cả với :escape => false, cho tôi địa chỉ giống nhau:

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

Tôi muốn url kết quả là: /foo/bar/baz

Có cách nào xung quanh điều này mà không cần vá đường ray không?

+0

oops hóa rubyonrails không phải là thẻ tốt nhất cho điều đó, xin lỗi. –

Trả lời

4

Thay vì truyền đường dẫn một chuỗi, hãy cho nó một mảng.

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

Nếu bạn không có các tuyến đường trong tập tin tuyến đường của bạn, link_to này cùng sẽ thay tạo này:

# <a href="/foo?path[]=bar&path[]=baz">Foo</a> 

Nơi duy nhất tôi có thể tìm thấy điều này ghi nhận là trong this ticket.

-3

Bất kỳ lý do nào bạn cần tạo URL với đường dẫn đó?

Sẽ sạch hơn nếu chỉ xác định một tuyến đường phụ để bao trùm URL đó.

+0

Vui lòng sử dụng tính năng nhận xét để làm rõ và ;-) – webmat

Các vấn đề liên quan