Код контроллера:
class HelpController<ApplicationController def index @url = "https://example.com/auth?user_id=1234&redirect_to=http://google.ru" end end
Посмотреть код:
<script>location.href='<%=@url%>';</script>
И он перенаправляет на ЭТО:
example.com/auth?user_id=1234&redirect_to=http://google.ru
Это: http://example.com/auth?user_id=1234 & amp; redirect_to = http://google.ru (без пробелов)
В Rails 3 вы можете вызвать метод .html_safe, чтобы сообщить rails, что вы убедились, что содержимое безопасно отправлять без экранирования.
См. http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/ для объяснения мотивации дляповедение по умолчанию для экранирования.
Идиома противоположна предыдущим версиям rails, где вам приходилось явно вызывать .h (.html_escape).
Нет эксперта по Ruby, но я думаю, что экранирование - это поведение по умолчанию.Вы должны заставить его выводить как неэкранированную строку, обернув ее в raw().
raw()