如何在 Rails 6 应用程序中将变量传递给 javascript

don*_*ote 3 javascript ruby-on-rails fullcalendar webpacker

我有一个使用完整日历的 rails 6 应用程序。我已经设置好日历并且可以正常工作。

要完成日历集成,我唯一需要做的就是将 @user.id 添加到向日历添加数据的 json 提要的 url。

这是我的代码:

javascript/fullcalendar/fullcalendar.js

import { Calendar } from "@fullcalendar/core";
import dayGridPlugin from "@fullcalendar/daygrid";

document.addEventListener('turbolinks:load', function() {
  var calendarEl = document.getElementById('calendar');

  var calendar = new Calendar(calendarEl, {
    
    plugins: [ dayGridPlugin ],

    eventSources: [
      {        
        url: "/users/<%= @user.id %>/jobs.json",
      }
    ]

  });

  calendar.render();

});
Run Code Online (Sandbox Code Playgroud)

如果我替换为<%= @user.id %>3那么日历会从 json.jbuilder 文件中提取数据并且日历可以工作。

我如何将 传递<%= @user.id %>给日历?

odl*_*dlp 8

在 Rails 应用程序中通过数据属性传递属性是一种很常见的模式。

在您的视图模板中,您将插入用户 ID:

<div id="calendar" data-user-id="<%= @user.id %>">
</div>
Run Code Online (Sandbox Code Playgroud)

在您的 JavaScript 中,您将通过以下方式读取用户 ID dataset

var calendarEl = document.getElementById('calendar');
var userId = calendarEl.dataset.userId;
Run Code Online (Sandbox Code Playgroud)