情報を提供してくれた皆さんに感謝します!非常に迅速な対応がいくつかありました。私の解決策は、ifでより明確なテストを使用することでした。勝利のための文法!
「予期していなかったときにnilオブジェクトがあります!nil.nameの評価中にエラーが発生しました」
このエラーは、以下の「file.name」の行を示しています。
nil.nameと評価されて空である(そうあるべきである)理由はわかりますが、そのコードが実行される理由がわかりません。
iftoのテストを変更することで機能します。
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