在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] %>
- 不显示任何内容
我错过了什么吗? 。 感谢您的任何指示
答案 0 :(得分:8)
<%- @model.data[:attr1] %>
替换为:
<%= @model.data["attr1"] %>
注意:开头<%=
。您错误地使用了<%-
。
UPD:
我建议使用HashWithIndifferentAccess
:
serialize :data, HashWithIndifferentAccess
通过这种方式,您可以通过符号或字符串作为键来获取值。
答案 1 :(得分:2)
您是否尝试过Hash密钥的字符串格式?
@model.data['attr1']