Rails View Helper не вставляет HTML в страницу - PullRequest
6 голосов
/ 30 сентября 2010

У меня проблема с использованием пользовательского вспомогательного метода в моем приложении Rails (3.0) для вывода необходимого html.

У меня есть следующий вызов в моем частичном представлении: _label.html.erb

<% display_resource "Diamond", @resource.diamond %>

А в файле resource_helper.rb:

module ResourceHelper
   def display_resource(display_name, value)
      "<tr><td>#{display_name} </td><td>#{value.to_s}%</td></tr>" if value > 0
   end
end

Предполагаемый результат:

<tr>
  <td>Diamond</td>
  <td>15%</td>
<tr>

* предоставлено, без форматирования, а 15 произвольно

Если я использую <% = ...%> при выполнении вызова метода, он выведет строку правильно, но это не будет HTML (т. Е. Я посмотрю "<tr><td>Diamond </td><td>15%</td></tr>" в отличие от "Diamond" 15% ")

Что я делаю неправильно?

1 Ответ

8 голосов
/ 30 сентября 2010

Вам нужно пометить возвращенную строку как " raw " и затем использовать <% =%>

module ResourceHelper
   def display_resource(display_name, value)
      raw("<tr><td>#{display_name} </td><td>#{value.to_s}%</td></tr>") if value > 0 # string wrapped in raw
   end
end
...