정보를 제공 해주신 모든 분들께 감사합니다.! 매우 빠른 응답이있었습니다. 내 해결책은 if에서 더 명확한 테스트를 사용하는 것이 었습니다. 승리를위한 문법!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라는 빈 배열을 생성합니다.
루비 1.8.7-P72 레일 2.2.2
문제가보기에 없습니다. @files에 nil을 추가하는 컨트롤러에 있습니다. 컨트롤러에서 코드를 게시 할 수 있습니까? –
또한 http://apidock.com/rails/v2.2.1/Object/present%3F를 참조하십시오 ..'! @ files.empty? '대신'@ files.present?'가 될 것입니다. '@files'가'nil' 일 때 (단지 더 멋진 문법) –
단순한'@ files'는 하나 이상의'nil'을 포함합니다. '! [nil] .empty?'는'true' (false가 아닌)를 반환합니다 - 명확하게 말하면,'[nil] .present? '는'true'를 리턴합니다. 사용할 수있는 것은'@ files.compact.each'입니다. 아니면,'@ files'가 처음에는'nil'을 포함하지 않도록하십시오. – Zabba