正确迭代相关表中的数据

时间:2014-03-03 04:45:26

标签: ruby-on-rails ruby-on-rails-4 devise

我正在研究一些应该很简单的事情,但我遇到了麻烦,因为我是新手。

我有一个名为TimeSheet的表和名为Entry的表。

我在我的time_sheet show视图中工作,想要遍历time_sheet上的相关条目。

我的型号设置如下。用户has_many:time_sheet。时间表belongs_to:user和has_many:entries。条目belongs_to:time_sheet

我的时间表视图如下:

  <% @current.each do |t| %>
  <td><%= t.entries :customer_name %></td>   
  <td><%= t.entries :order_number %></td>
  <td><%= t.entries :time_in %></td>
  <td><%= t.entries :time_out %></td> 
  <% end %>

我的time_sheet节目控制器是:

 def show
    if current_user
    @current = current_user.time_sheets.entries
  else
    redirect_to new_user_session_path, notice: 'You are not logged in.'
  end

我得到的奇怪输出看起来像每次迭代:

#<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Entry:0xb59dfcc8>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

因为你已经

@current = current_user.time_sheets.entries

<% @current.each do |t| %>

所以“t”是相关time_sheets的每个条目。你确定还有其他参赛作品吗?甚至假设语句没有语法错误。

<td><%= t.entries :customer_name %></td> 

这样怎么样。

   def show
        if current_user
        @time_sheets = current_user.time_sheets
      else
        redirect_to new_user_session_path, notice: 'You are not logged in.'
      end
   end

在视图中:

  <% @time_sheets.each do |sheet| %>
     <% sheet.entries.each do |t| %>
        <td><%= t.customer_name %></td>   
        <td><%= t.order_number %></td>
        <td><%= t.time_in %></td>
        <td><%= t.time_out %></td> 
     <% end %>
  <% end %>

我假设customer_name,order_name是条目表中的字段名称。