同一日历上具有simple_calendar的不同事件模型,Rails

问题描述 投票:1回答:2

我有两个不同的模型: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 %>
ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-5
2个回答
0
投票

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

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


0
投票

遇到同一问题。

[events具有关系,在使用表格和其他实用程序的情况下,您使用的语法是正确的,但它可能尚未引起该宝石开发人员的注意。

解决方案(解决方法)

<%= 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 %>

那怎么样? ;)

© www.soinside.com 2019 - 2024. All rights reserved.