В настоящее время у меня есть контроллер, собирающий некоторые HTML из TinyMCE на переднем конце. Если я возиться с firebug, то можно отправлять на экран теги сценариев и вводить предупреждающие сообщения и т. Д.
edit: в настоящее время я исправляю это в модели с помощью помощника sanitize:
require 'action_view'
class NotesController < AuthApplicationController
include ActionView::Helpers::SanitizeHelper
...
def update
params[:note][:content] = sanitize(params[:note][:content],
:tags => %w(a object p param h1 h2 h3 h4 h5 h6 br hr ul li img),
:attributes => %w(href name src type value width height data) );
@note.update_attributes(params[:note])
Это выглядит грязно в контроллере. Есть ли способ лучше? То есть каким-то образом интегрировать этот ActiveRecord, чтобы я мог легко указать, чтобы сделать это для этого и других полей перед сохранением аналогично проверке?
Спасибо за любые предложения.
редактирование:
Достигнуть некоторого прогресса здесь.
Под моим / Libs у меня есть
module SanitizeUtilities
def sanitize_tiny_mce(field)
ActionController::Base.helpers.sanitize(field,
:tags => %w(a b i strong em p param h1 h2 h3 h4 h5 h6 br hr ul li img),
:attributes => %w(href name src type value width height data) );
end
end
Тогда в моих моделях код сворачивается до
class MyModel < ActiveRecord::Base
include ::SanitizeUtilities
...
before_save :sanitize_content
...
def sanitize_content
self.content = sanitize_tiny_mce(self.content)
end
end
Это, кажется, удаляет нежелательную разметку без лишней суеты.
Довольно плохо знаком с рельсами, так нервничаю, что могу что-то делать не так. Кто-нибудь может увидеть здесь потенциальные недостатки?
Еще раз спасибо