крошечные метки дисплея mce в рельсах 3 - PullRequest
1 голос
/ 27 мая 2011

Я пытаюсь сохранить содержимое tinyMCE в столбце «detail».

Теперь, когда я отображаю содержимое, оно отображает все теги <p> <i> и т. Д. Это функция безопасности вrails3.

Но я не хочу, чтобы отображались теги <p>, я хочу, чтобы они отображались как HTML.

Один из найденных мной способов был <%= something.detail.html_safe %>

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

def detail_safe
    return self.detail.html_safe
  end

и отображать, используя <%= something.detail_safe %>

В любом случае мне нужно изменить тег <%= %> во многих местах,Есть ли более простое решение?Или я должен вручную изменить в каждом месте?

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 мая 2011

В модели:

def detail
  self[:detail].html_safe if self[:detail]
end

Обратите внимание, что в этом случае вы всегда получите вывод html_safe, когда будете делать model_object.detail.

1 голос
/ 27 мая 2011

Неважно, как вы это сделаете, вам придется изменить все свои <%= %>.

Ваши варианты:

<%= something.detail_safe %>
<%= something.detail.html_safe %>
<%= raw something.detail %>

Единственный другой вариант, который я могу придуматьотключить защиту XSS - но не делайте этого!

...