Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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 4中的js.erb文件中使用javascript_include_标记?_Javascript_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

如何在Rails 4中的js.erb文件中使用javascript_include_标记?

如何在Rails 4中的js.erb文件中使用javascript_include_标记?,javascript,ruby-on-rails,ruby,ruby-on-rails-4,Javascript,Ruby On Rails,Ruby,Ruby On Rails 4,以下是我的看法: <%= javascript_include_tag "social_sharing.erb" %> 如果我按照这些指示操作,我会得到js文件,但是没有对ERB标记进行评估,因此我仍然在链接的js文件中看到。该文件应命名为assets/javascripts/social_sharing.js.ERB(末尾带有.ERB),否则,Rails资产管道将不知道如何处理它,并将像提供纯JavaScript一样提供它。include标记应为,而不是.erb “资产”文件夹中

以下是我的看法:

<%= javascript_include_tag "social_sharing.erb" %>

如果我按照这些指示操作,我会得到js文件,但是没有对ERB标记进行评估,因此我仍然在链接的js文件中看到

该文件应命名为
assets/javascripts/social_sharing.js.ERB
(末尾带有.ERB),否则,Rails资产管道将不知道如何处理它,并将像提供纯JavaScript一样提供它。include标记应为
,而不是
.erb

“资产”文件夹中的所有内容都将通过进行处理,并且可以轻松地使用进行拉入

但是,
javascript\u include\u标记和资产管道用于真正的静态资产,这些资产将只预编译一次,然后与每个相关请求一起提供相同的文件。如果您试图包含动态内容,如
,这些内容会因请求而异,您可能希望将.js.erb文件移动到views目录中的某个位置,并将其作为部分呈现,类似于以下问题的第一个答案:


呈现部分:'[somewhere]/social_sharing',post:@post

该文件也需要重命名为
\u social\u sharing.js.erb

我不确定这是否是答案,但您使用资产管道与javascript的对比看起来很不寻常

要在资产预编译中包含js,请在/config/initalizers/assets.rb文件中添加此行

Rails.application.config.assets.precompile += %w( social_sharing.js )  
我认为,一旦将此文件包含在资产管道编译中,就根本不需要使用
javascript\u include\u标记


如果您尝试此操作,请告诉我您是否仍然存在错误和/或渲染问题。

您的域名应该是
js.erb
,并且
就足够了。您知道如何让我的rails变量在js.erb中工作吗?例如,
post
为零。第一个答案可能会有所帮助,您可能需要将.js.erb呈现为标记中的一部分,并将@post传递为本地-我将更新我的答案以反映这一点,谢谢。我想这并不是一种很好的不引人注目的方式,但它现在可以让我的js从我的视图文件中消失。它说“缺少部分,名称[某处]/social_sharing”,应该是.html.erb吗?@htafoya是视图目录中的文件吗?[某处]应该是视图目录中的一个路径,以便Rails知道在何处查找分部文件。例如,文件的完整路径可能类似于app/views/posts/_social_sharing.js.erb。该文件应该是.js.erb,除非它除了JavaScript代码之外还包含HTML。您好,这通常是我所做的,但我想将其包含在一个页面中,对不起。“将其包含在一个页面中”rails中的所有资产都被编译,甚至像jquery这样的lib也被编译到application.js中。你在RoR(个人资料)方面有很高的知名度,所以你知道这件事。所以我猜,我不确定你要做什么。嘿,基本上我只是想从我的html.erb文件中移动一段js,但仍然有js可用的实例变量。。我猜
javascript\u include\u标记
更适合静态资产等。。所以我可能一开始就用了错误的方法。你的答案没有错,所以我会投票给你。谢谢。有意思的问题,投票结果也是一样。我也从公认的答案中学到了一些东西。
<script>
    render partial: '[somewhere]/social_sharing', post: @post
</script>
Rails.application.config.assets.precompile += %w( social_sharing.js )