在我的仪表板上,我正在尝试将部分渲染为表格(索引)
我的部分:_transaction.html.erb 该部分实际上是一个基于事务索引的索引。它应该返回表中的所有事务。我的部分包含:
<% @transactions.each do |transaction| %>
<tr>
<td><%= transaction.transaction_type %></td>
<td><%= transaction.date %></td>
</tr>
<% end %>
我收到的错误:
“当你没想到它时,你有一个零对象! 您可能期望一个Array实例。 在评估nil.each“
时发生错误答案 0 :(得分:2)
这似乎表明您的TransactionsController#index
操作没有为@transactions返回任何内容。 最明显的原因是,无论您使用什么逻辑查找记录都会被破坏,返回0结果,或者没有正确设置@transactions。
在这样的视图中,您希望对没有结果的情况(或某种错误)进行错误检查。
您的index.html视图:
<% if !@transactions || @transactions.length == 0 %>
<p>'No transactions found.'</p>
<% else %>
<table>
<!-- put your column headers here -->
<!-- the next line iterates through each transaction and calls a "_transaction" partial to render the content -->
<%= render @transactions %>
</table>
<% end %>
您的_transaction.html.erb partial:
<tr>
<td><%= transaction.transaction_type %></td>
<td><%= transaction.date %></td>
</tr>
这将使您的视图再次运行。下一步是找出控制器操作未返回结果的原因。首先打开rails控制台并尝试检索记录:
>> Transaction.all
如果返回任何结果,那么您有数据。如果没有,请通过您开发的Web界面或通过rails控制台创建记录:
>> t = Transaction.new()
>> t.transaction_type = 1 #or whatever is appropriate for your application
>> t.date = Date.today
>> t.valid? #if true, your record will save. If not, you need to fix the fields so they validate
>> t.save
获得记录后,再次测试您的视图。如果仍然失败,您的控制器逻辑可能会出错。至于那个错误可能是什么,你需要发布它给我们来帮助你。 :)