Как я могу вывести сырой неэкранированный html из этого маршрута / помощников Rails? - PullRequest
6 голосов
/ 04 июля 2011

Я пытаюсь использовать следующий фрагмент кода для создания ссылки на моей странице

%h2= link_to '{{ label }}', product_path('{{ id }}'.html_safe)

Это на самом деле часть большего HTML-блока, который будет служить шаблоном javascript, и я позжевыполните синтаксический анализ, используя Underscore.js, чтобы заполнить заполнители {{ id }} и {{ label }}.Поэтому я бы хотел, чтобы rails выводил что-то в мой HTML-код, например

/ products / {{id}}

Однако он по-прежнему экранирует пробелы и скобки и дает мне

<a href="/products/%7B%7B%20id%20%7D%7D">{{ label }}</a>

Так что url_helper ускользает от моей строки, хотя я этого не хочу.Как я могу заставить его не делать этого?

Я пробовал

%h2= link_to '{{ label }}', product_path('{{ id }}'.html_safe)
%h2= link_to '{{ label }}', product_path(raw '{{ id }}')
%h2= link_to '{{ label }}', raw(product_path('{{ id }}'))

и

%h2=raw( link_to '{{ label }}', product_path('{{ id }}'.html_safe))

Но ни один из них не работает

РЕДАКТИРОВАТЬ:

Другой способиграть с этим с консоли рельсов,

include ActionController::UrlWriter

ruby-1.9.2-p0 :010 > product_path '{{ id }}'.html_safe
 => "/products/%7B%7B%20id%20%7D%7D" 

Любая помощь приветствуется ... спасибо

Спасибо

1 Ответ

7 голосов
/ 04 июля 2011

А как насчет CGI::unescape(product_path('{{ id }}')?(с require 'cgi', который идет с ним.)

Я считаю, что это только Ruby 1.9.2, но, похоже, это версия, которую вы используете.

...