感谢大家为我提供信息!有一些非常迅速的反应。我的解决方案是在 if 中使用更清晰的测试。语法胜利!
“你没想到有一个 nil 对象!评估 nil.name 时出错”
此错误指向下面带有“file.name”的行。
我明白为什么它评估为 nil.name 并且是空的(应该是)但我不明白为什么该代码甚至被执行。
它通过更改 if to 的测试来工作。
if file[0] != nil
我觉得我缺少一个重要的细节,所以我很感激能帮助我理解这一点。
在我看来,我有:
<table>
<tr>
<th>File</th>
<th>Description</th>
</tr>
<% if !@files.empty? %>
<% @files.each do |file| %>
<tr>
<td><%= file.name %></td>
<td><%= file.description %></td>
<td><%= link_to "Download", :controller => "files", :action => "download", :id => file.id %></td>
<td><%= button_to "Delete", { :controller => "files", :action => "destroy", :id => file.id }, :method => "delete" %></td>
</tr>
<% end %>
<% else %>
<tr>
<td><b>No files</b></td>
</tr>
<% end %>
</table>
在控制器中,我创建了一个名为 @files 的空数组,然后在创建它们时将值推入。
Ruby 1.8.7-p72 Rails 2.2.2