Как вывести «&» в RoR, не получая «&»? - PullRequest
0 голосов
/ 04 июня 2011

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

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&amp;redirect_to=http://google.ru

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

Ответы [ 2 ]

2 голосов
/ 04 июня 2011

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

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

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

1 голос
/ 04 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...