如何在视图文件夹中包含js.erb文件

我有一个用于视图的JavaScript文件。 需要有Ruby代码,我需要在Ruby中进行render ,所以我理解我不能将JavaScript文件放在资产管道中。 我可以把它放在与.html.erb文件相同的视图文件夹中。

如何包含JavaScript文件,或将该JavaScript文件用于该视图文件? 我在我的视图中尝试了javascript_include_tag (显然使用了资产管道),使用脚本src="myfile.js"作为myfile.js.erb文件(但找不到myfile.js ),并命名我的js.erb file( users.js.erb )与我的.html.erb文件( users.html.erb )相同,但都无济于事。

javascript_include_tag将不起作用在视图文件夹本身中声明的js.erb。 有三种不同的方式可以使用javascript。

1]在视图中编写代码,即在html.erb本身。

2]在public / javascripts文件夹中创建js文件,并使用javascript_include_tag包含它。

3]如果您想以Ajax的forms提出请求:

  • 在视图文件夹本身中创建js.erb,其名称与操作的名称相同。
  • 在创建某个将调用此操作的表单的视图中,使用以下命令发出请求:remote => true
  • 在被调用的操作中,使用代码如下:

     def action respond_to do |format| format.js end end 

你可以做到这一点

 render :partial => "myfile" 

您必须将文件保存在控制器的视图目录中,名称为_myfile.js.erb

现在你可以在这里编写自己的代码(js,ruby),也可以用javascript_include_tag将js分开来获取资产pipline

该文件将首先由erb引擎呈现,然后作为javascript呈现。