如何从没有辅助方法的Rails Asset Pipeline获取.swf文件?

时间:2017-06-02 19:37:11

标签: javascript ruby-on-rails reactjs actionscript-3 flash

我正在开发一个没有使用react-rails gem的Rails / React应用程序。代码分为两个目录 - 一个用于FE,一个用于BE。我的任务是为网络摄像头创建一个嵌入式跨浏览器解决方案来录制视频,并且已经实现了Chrome / FF解决方案(使用webRTC API)并且运行良好。我遇到的困难,许多人似乎也有这种困难,试图将其应用于Safari和IE。

我发现使用flash看起来像是一个不错的实现,所以我想在我的项目中包含它。我遇到的问题是将.swf文件提供给React代码。由于FE代码是从BE代码中分离出来的,所以我没有对我的任何FE代码使用Rails Views。 HTML DOM元素需要data =" path_to_swf_file"但是当我在Rails的公共目录中有文件时,我收到422错误。有谁知道处理这个的最佳方法?我应该为此创建一个控制器,并以这种方式提供.swf文件吗?我可以简单地从我的React代码访问公共文件夹,即使它是从Rails视图中拆分的吗?

方面问题:有没有人知道可以与React / Rails集成的企业解决方案?我认为如果实施它本身可能最好去这条路线被证明太麻烦了。

1 个答案:

答案 0 :(得分:0)

对于这个问题,我没有一个交钥匙的答案,但这里有两种方法,可能会解决这个问题:

  • 在您的JS代码中,加载由Rails资产管道生成的 <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("About", "About", "Home")</li> <li>@Html.ActionLink("Contact", "Contact", "Home")</li> <li class="dropdown"> <a class="dropdown-toggle" role="button" aria-expanded="false" href="@Html.ActionLink("Gaming", "Gaming", "Gaming")" data-toggle="dropdown">Gaming <span class="caret"></span></a> <ul class="dropdown-menu" role="menu"> <li>@Html.ActionLink("PC", "Gaming","Gaming")</li> </ul> </li> </ul> @Html.Partial("_LoginPartial") </div> 以查找资产的路径。这样,您可以查找SWF文件的完整路径,包括摘要。

  • 如果您可以接受对Rails控制器的请求,您可能需要考虑不提供文件本身,而只考虑提供给它的资产路径。这样,如果您决定开始使用CDN,它仍然可以工作,并且文件不需要由您的应用程序服务器提供。此外,这可能是action caching的用例。

将此作为答案发布,以便更具可读性。但是,如果在没有manifest.json的情况下在React on Rails上有更多经验的人有更好的解决方案,我自己也对此感兴趣:)