В настоящее время у меня есть контроллер, захватывающий некоторый 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
Это похоже на удаление нежелательной разметки без особой суеты.
Довольно новичок в рельсах, так нервничаю, что могу делать что-то не так. Кто-нибудь видит здесь потенциальные недостатки?
Еще раз спасибо