Ruby on rails 如何将多个模型中的数据添加到同一视图(Rails 3.2)

Ruby on rails 如何将多个模型中的数据添加到同一视图(Rails 3.2),ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我试图弄清楚如何让来自多个模型的数据在我的视图中显示在同一个日历上。现在它显示的是生日,但我很想添加周年纪念日和假期(目前只是视图中的列表)*为了清晰起见,删除了不必要的格式 users/show.html.erb <% if @user.friends.any? %> <h3>Upcoming Birthdays</h3> <div id="calendar"> <h2 id="month">

我试图弄清楚如何让来自多个模型的数据在我的视图中显示在同一个日历上。现在它显示的是生日,但我很想添加周年纪念日和假期(目前只是视图中的列表)*为了清晰起见,删除了不必要的格式

users/show.html.erb

 <% if @user.friends.any? %>
    <h3>Upcoming Birthdays</h3>
    <div id="calendar">
        <h2 id="month">
         <%= link_to "<", :month => (@date.beginning_of_month-1).strftime("%Y-%m") %>
         <%=h @date.strftime("%B %Y") %>
         <%= link_to ">", :month => (@date.end_of_month+1).strftime("%Y-%m") %>
        </h2>
                    <%= calendar_for @friends, :year => @date.year, :month => @date.month do |calendar| %>
                     <%= calendar.head('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun') %>
                      <%= calendar.day(:day_method => :dob) do |date, friends| %>
                       <%= date.day %>
                        <ul>
                            <% friends.each do |friend| %>
                            <li> <%= link_to h(friend.name), friends %><%= "\'s birthday"%></li>
                         <% end %>
                        </ul>
                    <% end %>
                <% end %>
    </div>
    <% end %>

    <% if @user.holidays.any? %>
    <h3>Upcoming Holidays</h3>
    <% @user.holidays.each do |hld| %>
      <td><%= hld.name %></td>
      <td><%= hld.date %></td>
    <% end %>
    </tbody>
    </table>

即将到来的生日
(@date.start\u of_month-1)。strftime(“%Y-%m”)%%>
(@date.end\u of_month+1).strftime(“%Y-%m”)%>
@date.year,:month=>@date.month do | calendar |%>
:dob)约会,朋友|%>
即将到来的假期
模型

class User < ActiveRecord::Base
  has_many :friends
  has_many :user_holidays
  has_many :holidays, :through => :user_holidays
  has_many :anniversaries



class Holiday < ActiveRecord::Base
  attr_accessible :name, :date
  has_many :user_holidays
  has_many :users, :through => :user_holidays

end


class UserHoliday < ActiveRecord::Base
  attr_accessible :holiday_id, :user_id
  belongs_to :user
  belongs_to :holiday
end


class Anniversary < ActiveRecord::Base
  belongs_to :user
  attr_accessible :anniversary_date, :spouse_name, :anniversaries, :interest_ids
  has_many :person_interests, :as => :person
  has_many :interests, :through => :person_interests
end
class用户:用户\u假日
有很多周年纪念日吗
类假日:user\u假期
结束
类UserHoliday:person
有很多兴趣,:通过=>:个人兴趣
结束

视图没有任何东西可以阻止它使用其他模型的数据。您只需确保控制器操作以某种方式将其传递给视图。您当前正在传递一个
@date
对象和一个
@user
对象;如果需要其他对象,也应设置这些对象。我建议您通过
@user
对象访问这些对象,也就是说,您应该为用户创建实例方法,以便可以在视图中访问它们

class User

  def birthdays
    ...
  end

  def anniversaries
    ...
  end

  def holidays
    ...
  end
end

然后在您的视图中,您可以简单地调用
@user.birthdays
等。

谈论有关此日历设置的更多信息。。。如何将新代码合并到现有日历中?我尝试的一切似乎都不起作用,换句话说,这是一个“朋友日历”,它是一个独立于用户的模型。朋友和用户都有生日。。那么,我如何在@friends日历的框架内调用user.birthdays呢?