如何在Rails3中呈现部分索引

时间:2011-01-22 17:22:55

标签: ruby-on-rails-3 partial-views

在我的仪表板上,我正在尝试将部分渲染为表格(索引)

我的部分:_transaction.html.erb 该部分实际上是一个基于事务索引的索引。它应该返回表中的所有事务。我的部分包含:

  <% @transactions.each do |transaction| %>
   <tr>
    <td><%= transaction.transaction_type %></td>
    <td><%= transaction.date %></td>
   </tr>
  <% end %>

我收到的错误:

“当你没想到它时,你有一个零对象! 您可能期望一个Array实例。 在评估nil.each“

时发生错误

1 个答案:

答案 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

获得记录后,再次测试您的视图。如果仍然失败,您的控制器逻辑可能会出错。至于那个错误可能是什么,你需要发布它给我们来帮助你。 :)