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

时间:2015-02-13 19:12:13

标签: jquery ruby-on-rails fullcalendar

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

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

在视图上呈现日历

如何动态地为每个玩家添加日历,以便我可以调用它来渲染:

<div id="player1_calendar"></div>
<div id="player2_calendar"></div>
<div id="player3_calendar"></div>
...

2 个答案:

答案 0 :(得分:1)

也许在Javascript中完全做到这一点更容易:

为所有日历元素添加一个类:

<div id="player1_calendar" class="player-calendar"></div>

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

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

答案 1 :(得分:1)

我会采用不同的方法。

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

一般算法如下:

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

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