7

我有一个与视图一起使用的 JavaScript 文件。里面需要有 Ruby 代码,而且我需要render在 Ruby 中做,所以我明白我不能将 JavaScript 文件放在资产管道中。我可以将它放在与文件相同的视图文件夹中.html.erb

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

4

2 回答 2

7

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
    
于 2013-08-26T06:11:15.583 回答
2

你可以这样做

render :partial => "myfile"

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

现在您可以在这里编写自己的代码(js、ruby),并且可能可以使用 javascript_include_tag 分离出 js 以利用资产管道

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

于 2013-08-26T06:00:14.980 回答