-1

我有一个看起来像的数组

["", "Fitness", "Stationary", "Looks", "Access", "Food", 
"---\n- Stationary\n- Access\n- ''\n"] ["", "Fitness", 
"Stationary", "Looks", "Access", "Food", "---\n- Stationary\n- Access\n- ''\n"]

我使用下面的代码来浏览它们......

<h3>Categories</h3>
<% for product in Product.select(:category)%>
    <% a = [""].concat(Product.select(:category).map(&:category).uniq) %>
<% end %>
<% a.each do |c| %>
    <p class="text-error"><%= link_to(c.delete("-"), ) %></p>
<% end %>

我得到这样的东西......

Fitness
Stationary
Looks
Access
Food
Stationary Access ''

完整代码位于:
https ://github.com/abhishekdagarit/sample-app.git

如何解决这个问题?如果数据库中有脏数据,我该如何清理?

这里有什么问题?以及如何解决?

4

1 回答 1

2

看起来您的数组中有 YAML:

jruby-1.7.0.preview2 :001 > require 'yaml'
 => true 
jruby-1.7.0.preview2 :002 > a = ["", "Fitness", "Stationary", "Looks", "Access", "Food", "---\n- Stationary\n- Access\n- ''\n"]
 => ["", "Fitness", "Stationary", "Looks", "Access", "Food", "---\n- Stationary\n- Access\n- ''\n"] 
jruby-1.7.0.preview2 :003 > YAML.load(a.last)
 => ["Stationary", "Access", ""] 

这意味着您category的表格列中可能有垃圾products。它是如何到达那里的,不确定;从 yml 文件中播种数据时可能发生了一些奇怪的事情?

避免这种情况的最好方法是制作一个名为 example 的categories引用表,并在表中使用category_id外键引用该products表。这样,在创建产品时,您可以显示一个仅包含有效类别的下拉列表,并防止将无效类别添加到数据库中。

于 2012-09-26T14:41:59.583 回答