我对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数据,将来如何阻止它,以及我现在如何删除它。
答案 0 :(得分:1)
如果您的play
操作不应构建新的InstructionType
(这是我从评论中收集的内容),请删除.build
电话。如果 ,请务必同时致电.save
上的InstructionType
。