如何将Rails控制器值分配给JavaScript常量
我在JavaScript函数中有一个常量,需要从Rails控制器或直接从JSON端点获取值 以下是返回所需值的控制器操作:如何将Rails控制器值分配给JavaScript常量,javascript,json,ruby,ajax,controller,Javascript,Json,Ruby,Ajax,Controller,我在JavaScript函数中有一个常量,需要从Rails控制器或直接从JSON端点获取值 以下是返回所需值的控制器操作: class EventsController < ApplicationController def calendar client = Signet::OAuth2::Client.new(client_options) client.update!(session[:authorization]) service = Google::Ap
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
这是我的/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调用来检索该值,还是有一种更简单的方法?我相信您必须将嵌入式Rails变量用单引号括起来,如
'<%= @calendar_list %>'
“”
或者,如果变量包含一个对象数组,我假设它包含一个对象数组,因为它被描述为一个列表,那么必须让JavaScript将其解析为JSON对象
基本上,Rails中的数据不是JavaScript知道如何解释的格式,因此需要将其格式化为字符串或对象,以便JavaScript可以读取。我将JavaScript移到
html.erb
文件中,然后移出application.js
这就是我将控制器值传递给JavaScript常量的方式
const calendarList = <%= raw @event_list %>
const calendarList=
这就成功了。日历列表的数据类型是什么?您可能能够执行
const calendarList=JSON.parse(“”
),但是的,使用JSON API端点获取数据是首选方法calendar\u list
是一个Google::API::CalendarV3::CalendarListEntry
数组。。。我有一个用于此端点的calendar.json.jsbuilder文件,该文件返回getEventSources函数所需的确切json。在注释中回答问题时,请不要在其他注释中回答。相反,编辑您的问题,将信息添加到问题中,就像新信息一直存在一样,没有固定到最后,而且肯定没有使用“编辑”或“更新”类型标记进行标记。回复评论迫使我们阅读页面上的每一条评论,并试图找出它们的顺序;如果我们需要知道更改的时间,我们可以查看编辑历史。如果我在控制器@list=@calendar\u list.items.map do | c | c.id end
中执行类似操作会怎么样;现在我有一个名为@list的数组,可以分配给我的js变量。。。你是说javascript不知道如何解释数组吗?我已经尝试了const calendarList=
和const calendarList=JSON.parse()
…幸运的是,如果你缺少引号,请尝试没有任何改变的JSON.parse(“”
)。如果有帮助的话,我在原始帖子中添加了更多细节
const calendarList = <%= raw @event_list %>