dhtmlxScheduler 与 Ruby on Rails 集成
本文将演示如何设置 Scheduler,并结合 REST API 在服务器端集成 Ruby on Rails 框架。
如果你使用的是其他技术,可以在下方找到其他集成选项:
- dhtmlxScheduler와 ASP.NET Core
- dhtmlxScheduler와 ASP.NET MVC
- dhtmlxScheduler와 Node.js
- dhtmlxScheduler와 PHP
- dhtmlxScheduler와 PHP:Slim
- dhtmlxScheduler와 PHP:Laravel 연동하기
- dhtmlxScheduler와 SalesForce LWC 통합하기
- dhtmlxScheduler와 dhtmlxConnector 연동하기
如果你的机器上已安装 Ruby on Rails,可以直接开始集成流程。否则,请按照安装指南中的说明完成框架安装。
一切准备就绪后,可以按步骤进行集成。
步骤 1. 创建项目
在终端中运行以下命令以创建新项目:
rails new path/to/your/project
步骤 2. 创建控制器
接下来,添加一个控制器,用于通过应用程序处理用户对服务器的请求。由于请求类型不同,建议为不同的请求类型创建独立的控制器。
路由用于将控制器与请求类型连接起来。不同的路由对应不同的动作,这些动作会 收集传递给视图的信息。
通过以下命令创建名为 "home" 的新控制器,并包含一个名为 "index" 的 action:
cd path/to/your/project
rails generate controller home index
输出结果会确认新文件的创建。
步骤 3. 指定路由
要设置路由,打开 config/routes.rb。在文件顶部附近找到如下行:
get 'home/index'
并将其 替换为:
root :to => 'home#index'
get "data", :to=>"event#get", :as=>"data"
post "data(/:id)", :to => "event#add"
put "data/:id", :to => "event#update"
delete "data/:id", :to => "event#delete"
之后,可以通过以下命令测试服务器:
rails server
然后在浏览器中打开 *http://localhost:3000/*。你应该会看到如下页面:

服务器已准备就绪,可以继续添加视图。
步骤 4. 引入源文件
首先,从这里下载 dhtmlxScheduler 包。
请按照以下步骤操作:
- 将 codebase/dhtmlxscheduler.js 以及 codebase/ext 和 codebase/locale 文件夹从安装包解压到项目目录下的 vendor/assets/javascripts/。
你应该会看到如下结构:

- 解压以下样式文件:
- codebase/dhtmlxscheduler.css
- codebase/dhtmlxscheduler_classic.css
- codebase/dhtmlxscheduler_flat.css
- codebase/dhtmlxscheduler_glossy.css
到 vendor/assets/stylesheets/ 目录下。
结果如下所示:

- 在 "public" 目录下创建 "assets" 文件夹,并将以下文件夹解压到其中:
- codebase/imgs
- codebase/imgs_dhx_terrace
- codebase/imgs_flat
- codebase/imgs_glossy
效果如下:

- 打开 config/initializers/assets.rb,将 dhtmlxscheduler.js 和 dhtmlxscheduler.css 添加到预编译列表:
Rails.application.config.assets.precompile += %w( dhtmlxscheduler.css )
Rails.application.config.assets.precompile += %w( dhtmlxscheduler.js )
步骤 5. 创建视图
现在可以创建视图了。视图用于展示由动作收集的信息。
如果没有为控制器指定专属布局,Rails 会使用 app/views/layouts/application.html.erb 作为所有页面的通用模板。建议在此文件的 header 部分引入 scheduler 的 JS 和 CSS 文件,添加如下内容:
<!DOCTYPE html>
<html>
<head>
<title>SchedulerRubyRest</title>
(= stylesheet_link_tag 'application',media:'all','data-turbolinks-track'=>true )
(= javascript_include_tag 'application', 'data-turbolinks-track' => true )
(= stylesheet_link_tag 'dhtmlxscheduler',media:'all','data-turbolinks-track'=>true )
(= javascript_include_tag 'dhtmlxscheduler', 'data-turbolinks-track' => true )
(= csrf_meta_tags )
</head>
<body>
(= yield )
</body>
</html>
接下来,为之前在步骤 2创建的 "home" 控制器指定视图。打开 app/views/home/index.html.erb,添加 scheduler 的容器及初始化代码:
<div id="scheduler_here" class="dhx_cal_container">
<div class="dhx_cal_navline">
<div class="dhx_cal_prev_button"> </div>
<div class="dhx_cal_next_button"> </div>
<div class="dhx_cal_today_button"></div>
<div class="dhx_cal_date"></div>
<div class="dhx_cal_tab" name="day_tab"></div>
<div class="dhx_cal_tab" name="week_tab"></div>
<div class="dhx_cal_tab" name="month_tab"></div>
</div>
<div class="dhx_cal_header">
</div>
<div class="dhx_cal_data">
</div>
</div>
<script>
scheduler.init("scheduler_here", new Date(2016,4,27), "week");
</script>
现在在浏览器中打开 *http://localhost:3000/*,你会看到一个空的 scheduler:

此时,scheduler 已经可以添加和修改事件,但还无法保存。要实现保存功能,需要创建模型。
步骤 6. 创建模型
Scheduler 需要和事件实体进行交互,因此需要为事件创建模型。
通过以下命令生成带有如下属性的事件模型:
rails generate model Event start_date:datetime end_date:datetime text:string
你可以在相关文档中查阅 Event 对象所需属性及其说明。
生成模型后,运行以下命令创建数据库:
rake db:migrate
可以通过以下步骤测试添加数据:
- 打开 Rails 控制台:
rails c