[英]Pass data from controller to assets js in rails
我正在使用Rails 5.我試圖將控制器中的數據(從sql查詢中獲取)傳遞給assss中的js文件。 我從控制器運行查詢為
@sample = Sample.all
我需要在全日歷事件中顯示數據。
資產/ js文件
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaDay,listWeek,agendaWeek,month'
},
editable: true,
eventLimit: true, // allow "more" link when too many events
defaultView: 'listWeek',
navLinks: true,
events: [
<% @sample.each do |sample| %>
{
title: '<%= sample.title %>',
start: TODAY + 'T09:00:00',
description: '<%= sample.description %>'
}
<% end %>
它沒有以全日歷顯示結果。 如何將其從控制器傳遞到Asset / js
非常感謝您的快速回復
一種簡單的方法是將局部放置在layouts / _variables.html.erb中 ,然后將其呈現在應用程序布局的<script>
標記中。
例如:
<script>
_app.samples = [
<% @sample.each do |sample| %>
{
title: '<%= sample.title %>',
start: TODAY + 'T09:00:00',
description: '<%= sample.description %>'
}
<% end %>
];
</script>
然后在原始日歷中,直接使用生成的Javascript:
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaDay,listWeek,agendaWeek,month'
},
editable: true,
eventLimit: true, // allow "more" link when too many events
defaultView: 'listWeek',
navLinks: true,
events: _app.samples,
在layouts / application.html.erb中
</script>
<%= render partial: "layouts/_variables" %>
<%= csrf_meta_tags %>
...
它的好處是您不需要使用Rails代碼污染Javascript資產,並且每次刷新頁面時都會更新數據,而無需額外往返服務器。
缺點是您需要單獨考慮Ajax請求(盡管這是一個完全不同的問題),並且應注意將這些變量放置在應用程序特定的結構中,以免用隨機變量污染全局空間。
您可以使用gon gem解決此問題,例如以下示例:
在控制器文件中:
gon.user_id = @ user.id
在js文件中:
console.log(gon.user_id);
“ Gon gem-在您的js中獲取Rails變量。如果您需要將一些數據發送到js文件中,並且您不想長時間通過視圖和解析來執行此操作,請使用此力! ”
有關更多信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.