Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Rails控制器值分配给JavaScript常量_Javascript_Json_Ruby_Ajax_Controller - Fatal编程技术网

如何将Rails控制器值分配给JavaScript常量

如何将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

我在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
这是我的
/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 %>