Лучший способ подключиться к 3-х страничному жизненному циклу Rails - PullRequest
1 голос
/ 12 октября 2011

У меня следующий сценарий: я адаптирую библиотеку редактирования на месте, чтобы можно было отображать отформатированные значения после того, как значение отредактировано в поле ввода.

Для этого я хочу сохранить идентификатор для некоторых полей, отображаемых в данном действии контроллера, которые будут обслуживаться через 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 и сделать этот хэш более детальным (возможно, для каждой страницы или сеанса?) И убедиться, что он исчез после того, как страница больше не используется?

...