Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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
Javascript Rails中的重定向:丢失实例变量_Javascript_Ruby On Rails_Ruby_Ruby On Rails 5 - Fatal编程技术网

Javascript Rails中的重定向:丢失实例变量

Javascript Rails中的重定向:丢失实例变量,javascript,ruby-on-rails,ruby,ruby-on-rails-5,Javascript,Ruby On Rails,Ruby,Ruby On Rails 5,我目前正在开发Rails 5.2应用程序。在应用程序中,我有一个通用导入页面,用户可以在其中导入不同型号的各种类型的数据。因为有这么多型号可用,所以我使用一个中央控制器—一个视图和Vue组件。下面是我在routes.rb中执行路由的方式: 获取“:资源类型/批量导入/新建”,至:“批量导入新建”,约束:{resource类型:/customers | items | books/} 在控制器内部,我正在设置一些实例变量: 类BulkImportsController

我目前正在开发Rails 5.2应用程序。在应用程序中,我有一个通用导入页面,用户可以在其中导入不同型号的各种类型的数据。因为有这么多型号可用,所以我使用一个中央控制器—一个视图和Vue组件。下面是我在routes.rb中执行路由的方式:

获取“:资源类型/批量导入/新建”,至:“批量导入新建”,约束:{resource类型:/customers | items | books/} 在控制器内部,我正在设置一些实例变量:

类BulkImportsController<应用程序控制器 def新 @模型=参数[:资源类型] @可用类型=可用类型_types@model 终止 def可用类型模式 为select生成一些选项,你就知道了 终止 终止 但当我在我的应用程序中实际访问/customers/bulk_import/new时,我无法访问我的实例变量,如@model等。每当我访问它们时,我都使用javascript块并将它们传递给vue,它们都返回null。如果我在我的控制器中抛出一个提升,那么这些值就会很好地显示出来。以下是我的应用程序/视图/批量导入/new.html.erb页面:

AvailableType=; 模型=;
我做错什么了吗?

不要在JS中声明隐式全局变量。它们在严格模式和ES6中被禁止。如果确实要使用全局变量,请使用window.availableTypes=;,显式声明它们;。我真的不明白为什么你不直接用JSON而不是这种黑客行为来回应。哦,我不知道。谢谢我被我当前的框架束缚住了/我们还没有足够的资源将所有东西都转换成一个使用Rails API的SPA-这是一个早在我到达之前就已经存在的应用程序,这里的图片中缺少了太多的东西,无法提供任何实际的调试帮助。我们需要知道请求是一个JS示例,您试图在其中访问变量。它也非常不清楚这与重定向有什么关系。我会先创建一个可复制的示例,很可能你会在这个过程中自己解决它。我很困惑这里缺少太多东西了-我要说的是,我无法从我的新的.html.erb页面访问控制器中设置的任何实例变量。即使我只是在HTML中打印@model etc变量,我也一无所获。我正在显示我在控制器中设置变量的位置,以及我在HTML视图中的确切内容。我还提供了URL和路由信息,我对所有内容都使用普通的rails约定。我遗漏了什么?你遗漏了这样一个事实:这段代码不会重现问题。这意味着我们完全没有什么事情要做,你所缺少的东西都不在这里。查看日志,确保您认为正在运行的代码实际上正在运行。如前所述,创建一个。