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

时间:2013-08-26 05:36:13

标签: javascript ruby-on-rails ruby

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

3]如果你想把请求作为Ajax:

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

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

答案 1 :(得分:1)

你可以通过

来做到这一点
render :partial => "myfile"

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

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

此文件将首先由erb引擎呈现,然后以javascript格式呈现。