Как я могу вывести «

#ruby-on-rails

#ruby-on-rails

Вопрос:

Код контроллера:

 class HelpController<ApplicationController
   def index
      @url = "https://example.com/auth?user_id=1234amp;redirect_to=http://google.ru"
   end
end
  

Просмотр кода:

 <script>location.href='<%=@url%>';</script>
  

И он перенаправляет на ЭТО:

 example.com/auth?user_id=1234amp;amp;redirect_to=http://google.ru
  

Это:
http://example.com/auth?user_id=1234 amp; amp; redirect_to =http://google.ru
(без пробелов)

Ответ №1:

В Rails 3 вы можете вызвать метод .html_safe, чтобы сообщить rails, что вы подтвердили, что содержимое безопасно отправлять без экранирования.

Смотрите http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0 / для объяснения мотивации поведения экранирования по умолчанию.

Идиома, обратная более старым версиям rails, где вам приходилось явно вызывать .h (.html_escape).

Комментарии:

1. Я думал, что это называется «safe_html» = D

Ответ №2:

Нет эксперта по Ruby, но я думаю, что экранирование — это поведение по умолчанию. Вы должны принудительно вывести его в виде неэкранированной строки, обернув ее в raw() .