从集合的子集中获取数据

时间:2014-03-16 08:00:35

标签: ruby-on-rails ruby-on-rails-3 controller

我有一个名为registered的集合。以下是控制器中的代码:

      @rsvped_events = @volunteer.events.includes(:event_rsvps, :rsvp_users, :shifts).current.paginate(:page => params[:page], :per_page => 3)

以下是视图中的代码:

<% unless @rsvped_events.empty? %>
<%= render :partial => "registered", :collection => @rsvped_events %>
<%= will_paginate @rsvped_events %>

和部分:

<li><%= registered.date %></li>
<li><%= link_to registered.name, event_path(registered) %></li>

当用户注册某个事件时,会将其记录在一个包含大量信息的event_rsvps表中。我遇到的问题是拉出event_rsvp的日期。我可以从事件本身中提取日期,但不能从event_rsvp中提取日期。如果事件跨越多天并且用户选择他们想要的那一天,则这些有时会有所不同。)

我已经尝试了以下各种结果,但没有任何效果:

registered.date  #gives me the date of the event, but not the rsvp
registered.event_rsvp.date  #undefined method `event_rsvp' for #<Event:0x007ff7cc9d2940>
registered.event_rsvps.date  #undefined method `date' for #<ActiveRecord::Relation:0x007ff7d4fcea30>

但是,如果我进入Rails控制台,我可以通过

提取日期
u = User.find(1)
u.event_rsvps.find(90).date

关于如何在event_rsvp上找到该日期的想法,而不是关于该事件?

1 个答案:

答案 0 :(得分:1)

由于存在关联,您可以将其称为

registered.event_rsvps.first.date

这将返回与已注册的._ / p>关联的event_rsvps中第一个对象的日期

如果您需要接收所有相关event_rsvps的日期集合,则需要map他们如下:

registered.event_rsvps.map(&:date)