Ruby on rails 如何在rails事件日历插件中添加显示事件的弹出面板?

Ruby on rails 如何在rails事件日历插件中添加显示事件的弹出面板?,ruby-on-rails,calendar,Ruby On Rails,Calendar,我在项目中使用了rails插件,需要对日历进行一些修改。当它显示事件时,我需要弹出一个面板,显示有关该特定事件的详细信息。请一些专家解释一下这个问题的解决方案好吗?假设您使用的是默认示例,您可以使用为每个日历事件呈现的链接输入自己的自定义解决方案。就我而言,我做了这样的事情: def event_calendar calendar event_calendar_opts do |args| event, day = args[:event], args[:day] html

我在项目中使用了rails插件,需要对日历进行一些修改。当它显示事件时,我需要弹出一个面板,显示有关该特定事件的详细信息。请一些专家解释一下这个问题的解决方案好吗?

假设您使用的是默认示例,您可以使用为每个日历事件呈现的链接输入自己的自定义解决方案。就我而言,我做了这样的事情:

def event_calendar
  calendar event_calendar_opts do |args|
    event, day = args[:event], args[:day]
    html = link_to display_event_time(event, day) + h(event.name), [event.calendar, event], :class => "calendar-event", "data-id" => event.id
    html += event_tooltip(event)
  end
end

def event_tooltip(event)
   raw "<div id="event_#{event.id}" class='event-tooltip' style="display:none">#{event.description}</div>"
end

不是我的确切代码,但希望能给你一个起点。您还可以将所需的所有元素放在链接本身中,例如“数据描述”和“数据标题”,避免在每个元素后隐藏插入div,只需根据需要在JS中构建一个即可。

首先,您必须将html链接更改为Ajax链接,如下所示

link_to_remote event.name, :url => {:controller => 'events', :action => 'get_events',:id=>event.id } 
您必须编写控制器代码以显示事件的详细信息。就我而言,我写的如下

def get_events
@event = Event.find(params[:id]) 
end
此外,还必须创建get_events.rjs文件以加载弹出框,如下所示

page.replace_html 'show_event', :partial => 'show_event'

page<< "$ ('#show_event_dialog').dialog({
    title: 'Event',
    modal: true,
    width: 500,
    close: function(event, ui) { $('#show_event_dialog').dialog('destroy') }

});"
page.replace_html'show_event',:partial=>'show_event'

pageStill我是rails新手,请您解释一下您的解决方案好吗??(例如,您使用的方法和建议的方法)如果您查看其上的示例,它们基本上会为您提供一个复制粘贴示例,以放置在您的助手中,这是我示例的
事件日历
部分。第二部分(工具提示)是我呈现一个简单的
div
,其中包含事件描述文本。默认情况下,这个
div
是隐藏的,因此我添加了一点jQuery来粗略地确定您可以在哪里显示div。查看git页面上的自述文件,了解如何使用日历的更好示例,它应该更有意义
page.replace_html 'show_event', :partial => 'show_event'

page<< "$ ('#show_event_dialog').dialog({
    title: 'Event',
    modal: true,
    width: 500,
    close: function(event, ui) { $('#show_event_dialog').dialog('destroy') }

});"