Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Ruby on rails 如何将React starterkit应用程序嵌入传统Rails应用程序?_Ruby On Rails_Reactjs_React Starter Kit - Fatal编程技术网

Ruby on rails 如何将React starterkit应用程序嵌入传统Rails应用程序?

Ruby on rails 如何将React starterkit应用程序嵌入传统Rails应用程序?,ruby-on-rails,reactjs,react-starter-kit,Ruby On Rails,Reactjs,React Starter Kit,我有一个基于Erik Rasmussen的初学者工具包的React应用程序 该应用程序使用React路由器和Redux运行良好 由于我的Rails应用程序很旧,嵌入该应用程序的想法是使用一个单独的控制器,其中索引操作呈现一个iFrame,它本身从相同的控制器显示操作加载其内容 因此,我可以坚持使用Rails应用程序的布局,在不做任何更改的情况下呈现React应用程序标记 在我通过 $>npm运行生成 我将main-.js和main-.css文件复制到Rails应用程序中,这样就可以从那里交付

我有一个基于Erik Rasmussen的初学者工具包的React应用程序

该应用程序使用React路由器和Redux运行良好

由于我的Rails应用程序很旧,嵌入该应用程序的想法是使用一个单独的控制器,其中
索引
操作呈现一个iFrame,它本身从相同的控制器
显示
操作加载其内容

因此,我可以坚持使用Rails应用程序的布局,在不做任何更改的情况下呈现React应用程序标记

在我通过


$>npm运行生成

我将main-.js和main-.css文件复制到Rails应用程序中,这样就可以从那里交付它们

之后,我通过以下方式启动React应用程序:


$>npm运行开始

并通过curl请求起始页。curl输出进入my
show
erb模板。在内部,我更改了加载主JS和CSS的URL

当我现在请求我的
索引
页面时,iFrame会加载它的内容,应用程序似乎会初始化,但根本不工作。我看到呈现的内容,但单击链接会导致Rails路由错误。因此,React似乎不会拦截这些点击

我试图跟踪执行情况,最后在
client.js
中调试了代码。看起来,
ReactDOM.render
接收正确的参数,这意味着要呈现的组件、存储区,甚至是目标元素都是正确的

目前,我在控制台中遇到以下错误:


未捕获引用错误:\未定义classCallCheck

我使用的是略为有序的starterkit版本,它将初始数据嵌入到标记中,但我无法理解为什么_classCallCheck在React应用程序中工作,但在嵌入Rails时停止工作

即使是最新版本的初学者工具包也不起作用。在这种情况下,我没有得到任何错误,但有相同的行为

由于旧的Rails版本,我无法使用React Gem,并且我需要starterkit提供的一些现成功能,因此更改此版本也不是选项


有什么提示吗?

你确定这是一条明智的道路吗?如果您有一个旧版的Rails,它位于非常旧的Rails版本上,那么在添加功能之前,出于安全原因,您应该优先升级应用程序。此外,如果目标是构建一个单页应用程序,那么您可能不需要Rails服务器的开销来为应用程序提供服务。相反,您只需要一个构建工具链和一个可以服务于静态文件的服务器。然后,您可以在Rails中创建API,SPA将其用作输入的后端.Thx@max。不幸的是,这是没有帮助的,因为我知道缺点,也知道有什么选择。升级旧版Rails应用程序不是一个选项。SPA需要集成,因为使用当前资源无法实现其他功能。谢谢你的输入。你确定这是一条明智的道路吗?如果您有一个旧版的Rails,它位于非常旧的Rails版本上,那么在添加功能之前,出于安全原因,您应该优先升级应用程序。此外,如果目标是构建一个单页应用程序,那么您可能不需要Rails服务器的开销来为应用程序提供服务。相反,您只需要一个构建工具链和一个可以服务于静态文件的服务器。然后,您可以在Rails中创建API,SPA将其用作输入的后端.Thx@max。不幸的是,这是没有帮助的,因为我知道缺点,也知道有什么选择。升级旧版Rails应用程序不是一个选项。SPA需要集成,因为使用当前资源无法实现其他功能。谢谢你的输入。