错误讯息为NoMethodError in Circuit#update
undefined method 'network_address' for nil:NilClass
,并在我的视图中与此行相关:
<td><%= logical_interface.subnet.network_address %></td>
一切都工作得很早,现在我设法在重新启动本地服务器时以某种方式打破它。
update.rhtml
<table id="logical_interfaces">
<% @logical_interfaces.each do |logical_interface| %>
<tr id="logical_interface_<%= logical_interface.id %>">
<td><%= logical_interface.description %></td>
<td><%= logical_interface.subnet.network_address %></td>
<td><%= logical_interface.bandwidth %></td>
</td>
</tr>
<% end %>
</table>
logical_interface.rb
belongs_to :subnet
belongs_to :circuit
subnet.rb
belongs_to :logical_interface
belongs_to :circuit
circuit.rb
has_many :subnets
has_many :logical_interfaces
circuit_controller.rb
CRUD正在另一个模型的控制器内部完成,因为这是其他一切都运行的主要对象。
def update
....
if params[:id]
@circuit = Circuit.find(params[:id])
end
@logical_interfaces = LogicalInterface.find_all_by_circuit_id(@circuit.id)
....
end
就像虫子一样,我敢打赌这是愚蠢的,但我真的无法为自己解决这个问题,所以我会非常感谢任何答案。我感觉这与模型之间定义的关系有关,但我可能错了。
答案 0 :(得分:1)
subnet
, nil
为logical_interface
。在LogicalInterface
模型中添加一些验证:
validates_presence_of :subnet
或仅在network_address
出现时显示subnet
。
<td><%= logical_interface.subnet.try(:network_address) %></td>