如何使用Ruby On Rails创建动态javascript?

我正在尝试使用jQuery FullCalendar和Ruby On Rails,我有一个名为Player的模型。 我想为索引模板上的每个玩家渲染一个日历。

$('#player1_calendar').fullCalendar({ // put your options and callbacks here }) 

在视图上呈现de calendar

我怎样才能动态地为每个玩家添加一个日历,所以我可以调用它来渲染它:

 
...

我会采用不同的方法。

问题是,Rails能够以JSON格式返回数据,JSON是JavaScript的原生数据格式。 也就是说,您可以编写静态JS并向其添加动态JSON数据端点。

一般算法如下:

  • 添加一个JSON端点,提供在每种特定情况下决定选项所需的所有数据:这可能是返回给定页面上所有玩家的数据的端点
  • 在HTML中突出显示集合的根标签:对于与行为相关的选项,我使用data-属性; 您甚至可以在属性值中提供端点的URL:重点是,您应该能够设计一个选择器来查找这些URL
  • 编写静态JavaScript,通过上面设计的选择器查找所有标记,查询所需数据,然后使用接收到的数据使用正确的选项调用fullCalendar

这是消除动态JavaScript需求的一般方法。 对于单一位置的解决方案来说,它显然有点过分,但是对于频繁使用,这更方便,因为它允许您应用行为而不生成普通的JS甚至将JS插入页面,而只是由DOM触发。

也许在Javascript中完全这样做更容易:

将类添加到所有日历元素:

 

然后遍历所有这些并附加你的fullCalendar:

 $('.player-calendar').each(function(idx, calendar) { $(calendar).fullCalendar({}); });