2013-08-19 3 views
0

У меня есть приложение Rails, в котором перечислены разные команды в списке на одном представлении. Команды являются ссылками и используются в URL-адресе, например localhost:3000/teams/chelsea показывает «chelsea».Как отключить HTML-адрес escaping

Если у меня есть команда называется man utd, когда я нажимаю на ссылку она ускользает все пробелы, так что URL, как:

localhost:3000/teams/<script>man%20utd 

но я это хочу, чтобы это было

localhost:3000/teams/<script>man utd 

Это мой код:

<a href="/<%= team["name"].html_safe %>"><%= team["name"] %></a> 

Я попытался с помощью html_safe после прочтения других вопросов и также raw, но им не повезло.

Каков наилучший способ решить эту проблему?

+2

Это не HTML спасаясь, это кодирование URL. Вы не можете поместить пробел в URL-адрес. Rails должен иметь возможность управлять статическими URL-адресами, вы можете публиковать конфигурацию/routes.rb – Slicedpan

+0

Что говорит Slicedpan. Это не имеет никакого отношения к Ruby или Rails. Ваш браузер автоматически кодирует URL-адрес, и для предотвращения этого вы ничего не можете сделать. – Mischa

+0

Он также изменяет user2527785

ответ

0

Я бы не помещал пробелы в ваши URL-адреса - вместо этого сделайте это как «man-utd». См. Spaces in URLs?

Есть также больше способов Rails-y выписать свои ссылки. Если ваши команды модель базы данных, я написал бы их, как:

<% @teams.each do |team| %> 
    <%= link_to team.name, team %> 
<% end %> 

Но что будет ссылка на/команд/1 и/2 команд и т.д., и вы должны положить в определенном маршруте к карте/команды/chelsea to/teams/1.

Если вы только что сделали их как отдельные представления для Манчестера и Челси затем сделать:

<%= link_to 'Man Utd', :controller => 'teams', :action => 'man-utd' %> 
<%= link_to 'Chelsea', :controller => 'teams', :action => 'chelsea' %>