在rails上的ruby上使用haml将值注入javascript

时间:2014-09-08 08:32:01

标签: javascript ruby-on-rails haml

我有以下循环

:javascript
$(document).ready(function() {
    $('#calendar').fullCalendar({
      defaultDate: '2014-09-12',
      editable: false,
      eventLimit: true, 
      events: [
        {
          - @kid.availabilities.order("availability_date desc").each do |availability|
            title: "#{@kid.name}",
            start: "#{availability.availability_date.to_datetime}"
        }        
      ]
    });
  });

但在行

start: "#{availability.availability_date.to_datetime}"

我总是得到

NameError at /profile/jean_oso
undefined local variable or method `availability' for #<#<Class:0x007f9210786578>:0x007f92107cf750>

如何在我的javascript上注入此值。

提前致谢。

更新


我查看了我的开发者工具,然后发现了

- @kid.availabilities.order("availability_date desc").each do |availability|

正在打印为文本,所以当我尝试这样做时:

start: "#{availability.availability_date.to_datetime}"

可用性变量不存在。

我做错了什么????

感谢您的帮助

更新2


我讨厌haml,我不会再用我的下一个项目了。这就是我解决问题的方法。

%script(type="text/javascript")
  $(document).ready(function(){
  $('#calendar').fullCalendar({
  defaultView: 'agendaWeek',
  editable: false,
  eventLimit: true,
  events: [
  - @kid.availabilities.order("availability_date desc").each do |availability|
    {
    title: "Available",
    start: "#{availability.availability_date.to_datetime.strftime("%Y-%m-%dT%H:%M:%S")}",
    end:   "#{availability.end_availability_date.to_datetime.strftime("%Y-%m-%dT%H:%M:%S")}",
    url: "#"
    },
  ],
  timeFormat: 'H(:mm)'
  });
  });

1 个答案:

答案 0 :(得分:0)

这是我解决的方法

%script(type="text/javascript")

(文档)$。就绪(函数(){   $(&#39;#日历&#39)。fullCalendar({   defaultView:&#39; agendaWeek&#39;,   可编辑的:假的,   eventLimit:true,   事件:[    - @ kid.availabilities.order(&#34; availability_date desc&#34;)。每个|可用性|     {     标题:&#34;可用&#34;,     开始:&#34;#{availability.availability_date.to_datetime.strftime(&#34;%Y-%m-%dT%H:%M:%S&#34;)}&#34;,     结束:&#34;#{availability.end_availability_date.to_datetime.strftime(&#34;%Y-%m-%dT%H:%M:%S&#34;)}&#34;,     网址:&#34;#&#34;     },   ]   时间格式:&#39; H(:mm)&#39;   });   });