轨道 4,完整日历,显示事件数组
Rails 4, Full Calendar, Display Events Array
希望有人能帮忙 - 我正在尝试在我的完整日历 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>
上面的代码似乎没有将事件拉入日历。但是,当我将"<%= @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
}
]
直接在视图脚本中,它可以工作。 =/任何建议??谢谢!
编辑: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>
是额外的引号搞砸了吗?我将如何摆脱它?
如果它不包含用户生成的数据,则可能需要将其标记为 HTML 安全。
鉴于以下雇员再培训局:
<% @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的攻击:
- http://guides.rubyonrails.org/security.html#cross-site-scripting-xss
- https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
理想情况下,您的日历将从单独的端点获取 JSON,而不是将其包含在内联脚本中。
相关文章:
- Twtitter Bootstrap模式显示事件多次触发
- knightlab timeline js-如何在不重叠的情况下显示事件
- 如何在jquery mobile中检测回按时的页面显示事件
- JQuery Mobile,通过window.location重定向可阻止页面显示事件
- 如何将隐藏/显示事件延迟到提交后Iframe加载
- 谷歌日历订阅源未显示事件
- 完整日历提前 1 小时显示事件
- jQuery 移动页面显示事件未在第一页上触发
- 从引导选项卡捕获“显示”事件
- 显示事件序列的 Javascript
- 引导选项卡显示事件仅在第一次触发,而不会在第二个或以后的选项卡开关上触发
- 在全日历.js中显示事件时出现问题
- Angularjs Full Calendar不显示事件
- 在显示事件后替换 CKEditor 对话框中的元素
- 完整日历无法显示事件
- fullcalendar事件源不再显示事件
- 如何在jQuery或javascript中显示事件描述的前200个字符
- FullCalendar 2.1.1不显示事件
- fullCalendar.js:按选定日期显示事件
- 完整日历不显示事件在相同的顺序在json中给出