У меня есть константа в функции JavaScript, которая должна принимать значение из контроллера Rails или напрямую из конечной точки JSON.
Вот действие контроллера, которое возвращает нужное мне значение :
class EventsController < ApplicationController
def calendar
client = Signet::OAuth2::Client.new(client_options)
client.update!(session[:authorization])
service = Google::Apis::CalendarV3::CalendarService.new
service.authorization = client
@calendar_list = service.list_calendar_lists.items
rescue Google::Apis::AuthorizationError
response = client.refresh!
session[:authorization] = session[:authorization].merge(response)
retry
end
Это действие контроллера также имеет соответствующую конечную точку JSON, localhost:3000/calendar.json
:
Этот JavaScript находится в моем файле application.rb. Я попытался передать мою calendarList
константу переменной экземпляра @calendar_list
, но это не сработало.
function getEventSources(){
const calendarList = <%= @calendar_list %>
const keyArray = calendarList.map(cal => {
return 'googleCalendarId'
})
const calendarIds = calendarList.map(cal => {
return cal["id"]
})
eventSources = []
for(i=0; i < keyArray.length; i++) {
var obj = {}
obj[keyArray[i]] = calendarIds[i]
eventSources.push(obj);
}
return eventSources
};
Это моя конечная точка /calendar.json
:
[
{
id: "en.usa#holiday@group.v.calendar.google.com",
summary: "Holidays in United States"
},
{
id: "nba_1_%41tlanta+%48awks#sports@group.v.calendar.google.com",
summary: "Atlanta Hawks"
}
]
Нужно ли мне сделать какой-то тип AJAX вызова для получения этого значения или есть более простой способ?