謝謝給大家提供給我的信息!有一些非常快速的迴應。我的解決方案是在if中使用更清晰的測試。贏得勝利的語法!if/else在erb執行代碼它不應該
「你有一個零對象時,你沒想到吧!在評估nil.name發生錯誤」
此錯誤指向以下符合「file.name」。
我得到它爲什麼評估爲nil.name和爲空(它應該是),但我不明白爲什麼代碼甚至執行。
它通過改變測試的,如果到..
if file[0] != nil
我覺得有我的思念,所以我會很感激一些幫助理解這個重要的細節。
在我看來,我有:
<table>
<tr>
<th>File</th>
<th>Description</th>
</tr>
<% if [email protected]? %>
<% @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
麻煩不在視圖中。它位於控制器中,您將向@files添加零。你能不能從控制器發佈代碼? – 2012-07-08 06:18:33
也.. ..參考http://apidock.com/rails/v2.2.1/Object/present%3F ..一個替代'!@ files.empty?'將是'@ files.present?'這也檢查'@ files'爲'nil'(這只是一個更好的語法) – 2012-07-08 06:23:04
簡單,'@ files'包含一個或多個'nil's。請注意,'![nil] .empty?'返回'true'(而不是'false') - 會更清晰,'[nil] .present?'將返回'true'。你可以使用'@ files.compact.each'。或者更好的是,確保'@ files'首先不包含'nil'。 – Zabba 2012-07-08 08:53:29