无法删除不在表中的Nil数据

时间:2013-06-04 01:45:11

标签: database ruby-on-rails-3 rails-activerecord

我对rails上的ruby和在rails 3和mac osx8中构建基本应用程序相对较新。

我在视图中的每个循环迭代中遇到了一个额外的空白数据集,这里:

<% @exercise.instruction_types.each do |instruction_type| %>
            <li><a href="#tab<%= instruction_type.id %>" data-toggle="tab"><%= instruction_order %>. <%= instruction_type.name %></a></li>
            <% instruction_order = instruction_order + 1 %>
<% end %>

这是在节目中创建一个额外的空白礼物。当我加载该视图时,我看到循环的额外迭代,其结果字段为空值。即使阵列是[],也会发生这种情况。

Instruction_type型号:

class InstructionType < ActiveRecord::Base
  has_many :instructions
  has_many :exercises, :through => :instructions
  attr_accessible :name 
end

这是控制器:

def play
    ..
    @instruction_types = @exercise.instruction_types.build
    ..
end

经过一些研究并遵循此处的建议Getting a rogue iteration from my .each loop 我在我的view.html.erb

中插入了这个实例变量检查
<%= @exercise.instruction_types.inspect %>

渲染视图输出

[#<InstructionType id: 1, name: "Content", created_at: "2013-06-03 03:11:56", updated_at:     "2013-06-03 03:11:56">,...
<InstructionType id: nil, name: nil, created_at: nil, updated_at: nil>}

我想知道如何创建nil数据,将来如何阻止它,以及我现在如何删除它。

1 个答案:

答案 0 :(得分:1)

如果您的play操作不应构建新的InstructionType(这是我从评论中收集的内容),请删除.build电话。如果 ,请务必同时致电.save上的InstructionType