0

複数のモデルのデータを同じカレンダーに表示する方法を理解しようとしています。現在、誕生日が表示されていますが、記念日や祝日も追加したいと思います(現在はリストに表示されています)。*わかりやすくするために不要な書式を削除しました。

https://github.com/watu/table_builder

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>

モデル

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
4

1 に答える 1

1

他のモデルのデータを使用できないようにするビューについては何もありません。コントローラのアクションが何らかの方法でそれをビューに渡すことを確認する必要があります。@date現在、1つのオブジェクトと1つのオブジェクトを渡してい@userます。他のオブジェクトが必要な場合は、それらも設定する必要があります。オブジェクトを介してこれらのオブジェクト@userにアクセスできるようにすることをお勧めします。つまり、ビューでアクセスできるように、ユーザーのインスタンスメソッドを作成する必要があります。

class User

  def birthdays
    ...
  end

  def anniversaries
    ...
  end

  def holidays
    ...
  end
end

そして、あなたの見解では、あなたは単に@user.birthdaysetcなどを呼び出すことができます。

于 2012-05-30T17:21:58.667 に答える