Рельсы 3 виджет помощник частичный
-
03-10-2019 - |
Вопрос
Я столкнулся с большой проблемой в перемещении моего приложения к рельсам 3. У меня есть вид на просмотр, который я называю «Widegethelper». Это помогает автоматически рендерировать некоторые частицы, когда я ссылаюсь на него. Например
<%= widget('loginbox', :global => true) %>
Но это не работает правильно. Он отображает HTML-код, как я хочу, но ускользает от возвращаемого значения, что не ожидается. Как я могу сказать оказывать (или к чему-то) нет избежать возврата для меня?
Вот мой код:
def widget(widget, options={})
begin
unless options[:fullpath]
render :partial => widget_path(widget, options[:global])
else
render "widgets/#{widget}"
end
rescue ActionView::MissingTemplate
"<!-- widget: #{widget.inspect}, #{options.inspect} -->"
end
end
Решение
def widget(widget, options={})
begin
unless options[:fullpath]
raw render(:partial => widget_path(widget, options[:global]))
else
raw render("widgets/#{widget}"))
end
rescue ActionView::MissingTemplate
raw "<!-- widget: #{widget.inspect}, #{options.inspect} -->"
end
end
То raw
Метод рельсов 3 делает обратное h
Метод в рельсах 2. Удаление строки было сделано с h
Способ на рельсах 2. На рельсах 3 строки, вывод с вида сбежается по умолчанию, а сбежав может быть отключен raw
метод.
Другие советы
Rails 3 изменил способ фильтрации контента - это по умолчанию предполагает, что вы хотите, чтобы все фильтровали.
Вы можете исправить это, используя html_safe
:
"<!-- widget: #{widget.inspect}, #{options.inspect} -->".html_safe
Видеть: http://asciicasts.com/episodes/204-xss-protection-in-rails-3.