Ruby on Rails 3 我有一个名为“area_served”的属性的模型。它由许多记录组成。 rails控制台的示例:
area_served: "---\n- ''\n- Ontario\n"
当它显示在我的视图中时,显示如下:
--- - '' - Ontario
我希望它只显示没有破折号和引号的地方的名称。
我正在考虑使用正则表达式,但我不确定如何实现正则表达式。
@dashey = /[^\w,'-]|_/
这是视图文件必须显示的内容:
<% #current_grandstreamer.resellers.each do |reseller| %>
<tr>
<td><%= reseller.area_served%></td>
</tr>
谢谢
答案 0 :(得分:2)
您可以使用gsub替换短划线和带空字符串的引号
<tr>
<td><%= reseller.area_served.gsub(/['-]/, '')%></td>
</tr>
如果需要,还可以删除换行符
area_served.gsub(/['-\n]/, '')
答案 1 :(得分:1)
这是一个YAML:
"---\n- ''\n- Ontario\n"
特别是,这是该阵列的YAML版本:
['', 'Ontario']
如果area_served
确实应该是YAML'd数组,那么你可以:
areas_served = YAML.load(obj.area_served) # or stuff this in a model method
将数组返回,然后像任何其他数组一样呈现。
但是,我怀疑area_served
根本不应该是一个YAML'd数组,我怀疑它应该是一个简单的字符串。如果是这样,那么你正在尝试将数组保存到文本列,而ActiveRecord则以其无限的智慧将数组转换为YAML,因为这就是AR对它不理解的东西的作用;您将不得不弄清楚这些数组的来源并修复该代码,然后您将不得不浏览数据库并将已错误存储为YAML的area_served
值取消YAML
答案 2 :(得分:1)
看起来像YAML,表示序列化字段。您可以在模型中使用serialize
方法:
class Reseller < ActiveRecord::Base
serialize :area_served
end
之后,area_served
会自动反序列化:
reseller.area_served
#=> ["", "Ontario"]