我在一个erbish模板中有一个python脚本,看起来像这样:
items = <%= some_array.sort.reverse %>
这种事情有危险吗?将ruby数组回显到python数组的正确方法是什么?
答案 0 :(得分:1)
调用<%= ... %>
时的默认呈现是通过正在呈现的对象的.to_s
。根据定义,.to_s
不保证是双向的,并且有一些ruby构造一旦被渲染,就不能被反序列化(例如Hash)。
如果您确切知道要渲染的数组中的内容(例如,字符串列表),这可能没问题。但是,如果它不是一个简单的对象,您可能需要考虑手动渲染每个项目,或使用JSON序列化程序渲染对象,而不是依赖.to_s
:
items = json.loads('<%= JSON[some_array.sort.reverse] %>')