У меня следующий сценарий: я адаптирую библиотеку редактирования на месте, чтобы можно было отображать отформатированные значения после того, как значение отредактировано в поле ввода.
Для этого я хочу сохранить идентификатор для некоторых полей, отображаемых в данном действии контроллера, которые будут обслуживаться через AJAX при необходимости.
Я хочу иметь возможность сделать следующее в представлении:
<%= edit_in_place @object, :attribute do |value|
"Formatted display value is #{value}"
end
%>
Итак, я генерирую UUID для отображаемого элемента управления:
<input ... data-uuid="27b52850-d68f-012e-5dc8-28373723e63c" ...>
Конечная цель состоит в том, чтобы сохранить хэш FormattingRules
, который будет принимать передаваемый блок, и назначить его UUID, чтобы позже я мог, после того как пользователь отредактировал значение, вызвать метод AJAX для форматирования значения:
http://server/format/27b52850-d68f-012e-5dc8-28373723e63c?value=My+Value
Сработал следующий код:
def show
block = BestInPlace::FormattingRules[params[:id]]
render :text => block.call(params[:value])
end
И треска возвращается:
Отформатированное значение отображения - My Value
Что здорово. При этом я могу скрыть редактирование на месте ввода и отобразить отформатированное значение.
Все уже работает, однако хэш FormattingRules
растет бесконечно и никогда не очищается.
Мой вопрос: есть ли способ, которым я могу подключиться к жизненному циклу Rails и сделать этот хэш более детальным (возможно, для каждой страницы или сеанса?) И убедиться, что он исчез после того, как страница больше не используется?