2

我对 ruby​​ on rails 和在 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 %>

这在节目中创造了一个额外的空白 li 项目。当我加载该视图时,我看到循环的额外迭代,结果字段的值为空。即使数组是 [] 也会发生这种情况。

指令类型模型:

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

经过一些研究并遵循此处的建议从我的 .each 循环中获取流氓迭代后,我 在 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 数据是如何创建的,将来如何防止它,以及现在如何删除它。

4

1 回答 1

1

如果您的play操作不应该构建一个新的InstructionType(这是我从评论中收集的),只需删除该.build调用。如果,请务必同时调用.saveInstructionType

于 2013-06-04T04:33:34.367 回答