在 Rails 3.2 应用程序中,我有一个带有文本列:data
的模型。在模型中,我有:
class Model
serialize :data, Hash
end
这是以格式正确存储数据 data:{"attr1"=>"foo", "attr2"=>"bar"....}
.
如果我想在显示视图中显示它,我可以做<%= @model.data %>
,并渲染整个哈希。
但是,如果我只需要渲染特定属性怎么办?这可能吗?
我尝试了几种似乎可行的方法:
<%= @model.data.attr1 %>
- 生成undefined method 'attr1'
<%- @model.data[:attr1] %>
- 不显示任何内容
我错过了什么吗?.感谢您的任何指示
<%- @model.data[:attr1] %>
替换为:
<%= @model.data["attr1"] %>
注意:<%=
开头。你误用<%-
了。
上级:
我建议使用HashWithIndifferentAccess
:
serialize :data, HashWithIndifferentAccess
通过这种方式,您可以通过符号或字符串作为键来获取值。
您是否尝试过哈希键的字符串格式?
@model.data['attr1']