使用simple_calendar,Rails在同一日历上使用不同的事件模型

时间:2018-07-19 18:25:00

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

我有两个不同的模型:NoteTodo。每个属性都有自己想要显示在日历上的属性。

我正在尝试在events上显示一种以上的simple_calendar,但是不断出现错误,undefined method 'start_time' for #<Note::ActiveRecord_Relation:0x007ffce4182638>

这是我的代码:

<%= calendar number_of_days: 1, events: [@notes, @todos] do |date, notes, todos| %>
  <%= date %>
  <% notes.each do |note| %>
    <div>
      <%= note.title %>
    </div>
  <% end %>
  <% todos.each do |todo| %>
    <div>
      <%= todo.title %>
    </div>
  <% end %>
<% end %>

2 个答案:

答案 0 :(得分:0)

我认为错误是因为events: [@notes, @todos]正在创建一个包含两个元素@notes@todos的新数组,并且当它调用start_time时是针对@Notes的这是ActiveRecord关系(在Rails最新版本上),而不是Note对象。

我碰到这篇文章,寻找一种使用excid3's simple_calendar在一天中插入多种事件类型的方法。目前我还没有提出解决方案,我想您正在寻找相同的解决方案。

答案 1 :(得分:0)

遇到同样的问题。

events具有某种联系,您使用的语法在形式和其他一些实用程序的情况下是正确的,但它可能尚未引起该gem的开发人员的注意。

解决方案(解决方法)

<%= calendar number_of_days: 1, events: @notes+@todos do |date, events| %>
  <%= date %>
  <% events.each do |event| %>
    <div>
      <%= event.title %>    <%# if both models have same column that you wanna show like this case, otherwise see solution below.%>
    </div>
  <% end %>
<% end %>

OR

<%= calendar number_of_days: 1, events: @notes+@todos do |date, events| %>
  <%= date %>
  <% events.each do |event| %>
    <div>
      <% if event.is_a? Note %>
        <% "show_something_for_note" %>
      <% elsif event.is_a? Todo %>
        <% "show_something_for_todo" %>
      <% end %>
    </div>
  <% end %>
<% end %>

那怎么样? ;)