我正在研究一些应该很简单的事情,但我遇到了麻烦,因为我是新手。
我有一个名为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>
非常感谢任何帮助。
答案 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是条目表中的字段名称。