Я снова борюсь с рельсами 3 и маршрутами.
Вот проблема:
Я создал именованный маршрут, например, такой:
match '/download/artist/:artist/album/:albumName', :to => "albums#show", :as => :search, :via => :get
, который дает мне этот маршрут: search_path
У меня также есть классический пример: get "albums/show"
, который дает мне этот маршрут: albums_show_path
.
Однако, когда я использую search_path с некоторыми параметрами, подобными этим:
<%= link_to "#{result.name[0..50]}(...)", search_path(:artist =>result, :albumName => result.name), :class => "albumName" %>
, происходит сбой, но не с album_show_path.Вот ошибка:
no route matches {:controller=>"albums", :action=>"show", :artist=>"Eddie Vedder & Ben Harper", :albumName=>"My City of Ruins / My Father's House (Live) [Benefiting Artists for Peace and Justice Haiti Relief] {Digital 45}"}
Я знаю, что это, вероятно, потому что параметр albumName не экранирован.Но даже после попытки сбежать с помощью CGI.escape
не работает.Я полагаю, мне нужно сделать это в route.rb, но я понятия не имею, как.
У вас есть идеи, как это сделать?
EDIT
Ошибка говорит: нет совпадения маршрута и т. Д. Если у меня нет параметра с недопустимыми символами, он находит маршрут.
** EDIT rake routes
**
welcome_index GET /welcome/index(.:format) {:controller=>"welcome", :action=>"index"}
albums_index GET /albums/index(.:format) {:controller=>"albums", :action=>"index"}
albums_show GET /albums/show(.:format) {:controller=>"albums", :action=>"show"}
search GET /download/artist/:artist/album/:albumName(.:format) {:controller=>"albums", :action=>"show"}
albums_show_album_info GET /albums/show_album_info(.:format) {:controller=>"albums", :action=>"show_album_info"}
albums_show_itunes GET /albums/show_itunes(.:format) {:controller=>"albums", :action=>"show_itunes"}
albums_show_spotify GET /albums/show_spotify(.:format) {:controller=>"albums", :action=>"show_spotify"}
albums_show_carrefour GET /albums/show_carrefour(.:format) {:controller=>"albums", :action=>"show_carrefour"}
root /(.:format) {:controller=>"welcome", :action=>"index"}