我有两个不同的模型:Note
和Todo
。每个属性都有各自不同的属性,我想在日历上显示。
我试图在我的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 %>
[我认为错误是因为events: [@notes, @todos]
正在创建具有两个元素@notes
和@todos
的新数组,并且当它调用start_time
时,它是针对ActiveRecord关系的@Notes
(在Rails最新版本上)而不是Note
对象。
我跑到这篇文章中,寻找一种使用excid3's simple_calendar在一天中插入多种事件类型的方法。目前我还没有提出解决方案,我想您正在寻找相同的解决方案。
遇到同一问题。
[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 %>
那怎么样? ;)