希望有人可以提供帮助 - 我试图在我的Full Calendar Gem实现中显示一系列事件。
在我的控制器中,我有:
@events_array =
[
{
title: 'event1',
start: '2016-03-01'
},
{
title: 'event2',
start: '2016-03-05',
end: '2016-03-07'
},
{
title: 'event3',
start: '2016-03-09T12:30:00',
allDay: false
}
]
在我看来,我有以下脚本:
<script>
$(document).ready(function() {
// page is now ready, initialize the calendar...
$('#calendar').fullCalendar({
// put your options and callbacks here
height: "auto",
events: "<%= @events_array %>"
})
});
</script>
上面的代码似乎并没有将事件拉入日历。但是,当我更换&#34;&lt;%= @events_array%&gt;&#34;用:
[
{
title: 'event1',
start: '2016-03-01'
},
{
title: 'event2',
start: '2016-03-05',
end: '2016-03-07'
},
{
title: 'event3',
start: '2016-03-09T12:30:00',
allDay: false
}
]
直接在View脚本中,它的工作原理。 = /任何建议?谢谢!
编辑:HTML渲染:
<script>
$(document).ready(function() {
// page is now ready, initialize the calendar...
$('#calendar').fullCalendar({
// put your options and callbacks here
height: "auto",
events: "[{:title=>"event1", :start=>"2016-03-01"}, {:title=>"event2", :start=>"2016-03-05", :end=>"2016-03-07"}, {:title=>"event3", :start=>"2016-03-09T12:30:00", :allDay=>false}]"
})
});
</script>
是否有额外的报价搞砸了?我怎么能摆脱它?
答案 0 :(得分:1)
如果它不包含用户生成的数据,则可能需要将其标记为HTML安全 。
鉴于以下ERB:
<% @foo = [{title: 'event1',start: '2016-03-01'}] %>
<script>
$(document).ready(function() {
var bad = "<%= @foo %>";
var better = <%= @foo.to_json.html_safe %>;
});
</script>
您将获得以下HTML:
<script>
$(document).ready(function() {
var bad = "[{:title=>"event1", :start=>"2016-03-01"}]";
var better = [{"title":"event1","start":"2016-03-01"}];
});
</script>
请注意,bad
是转义JSON的字符串,better
是真正的JSON。
使用html_safe
会带来安全风险,因此请谨慎使用!!如果用户内容进入,那么您将容易受到XSS的攻击:
理想情况下,您的日历会从单独的端点获取JSON,而不是将其包含在内联脚本中。