我有以下场景:我正在调整一个就地编辑库,以便能够在输入字段上编辑值后显示格式化的值。
为此,我想存储在给定控制器操作上呈现的某些字段的 id,以便在需要时通过 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 生命周期并使这个散列更加细化(也许是每页或会话?)并确保它在页面不再被使用后消失?