0

在我看来,错误消息NoMethodError in Circuit#update undefined method 'network_address' for nil:NilClass与此行相关:

<td><%= logical_interface.subnet.network_address %></td>

早些时候一切都运行良好,现在当我重新启动本地服务器时,我设法以某种方式破坏了它。

更新.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>

逻辑接口.rb

belongs_to :subnet
belongs_to :circuit

子网.rb

belongs_to :logical_interface
belongs_to :circuit

电路.rb

has_many :subnets
has_many :logical_interfaces

电路控制器.rb

CRUD 正在另一个模型的控制器内部完成,因为这是其他一切运行的主要对象。

def update

  ....
  if params[:id]
    @circuit = Circuit.find(params[:id])
  end

  @logical_interfaces = LogicalInterface.find_all_by_circuit_id(@circuit.id)
  ....

end

与错误一样,我敢打赌这是很愚蠢的事情,但我真的无法为自己解决问题,因此非常感谢任何答案。我感觉这与模型之间定义的关系有关,但我可能是错的。

4

1 回答 1

1

subnetnillogical_interfaceLogicalInterface在模型中添加一些验证:

validates_presence_of :subnet

network_address仅在subnet存在时显示。

<td><%= logical_interface.subnet.try(:network_address) %></td>
于 2013-08-15T21:15:25.863 回答