Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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
Javascript I';I’我想在咖啡脚本文件上运行ERB。显然,如果将文件放置在视图上,则可以执行此操作,但我应该将文件放置在何处?_Javascript_Ruby On Rails_Ruby On Rails 4_Coffeescript - Fatal编程技术网

Javascript I';I’我想在咖啡脚本文件上运行ERB。显然,如果将文件放置在视图上,则可以执行此操作,但我应该将文件放置在何处?

Javascript I';I’我想在咖啡脚本文件上运行ERB。显然,如果将文件放置在视图上,则可以执行此操作,但我应该将文件放置在何处?,javascript,ruby-on-rails,ruby-on-rails-4,coffeescript,Javascript,Ruby On Rails,Ruby On Rails 4,Coffeescript,我想在coffeescript文件上运行一些ERB代码。目前我有一个名为“places”的控制器,我正在对它的索引进行一些工作 我有一个index.html.haml,我已经设法从资产管道(名为places.js.coffee)获取了coffeescript,但我还没有找到一种方法使ERB代码从中运行。我读到,如果咖啡脚本在你看来,这是可能的。我试图在控制器的视图中放置一个名为“index.js.coffee”的coffeescript文件,但它不起作用 我尝试创建的文件是:/app/views

我想在coffeescript文件上运行一些ERB代码。目前我有一个名为“places”的控制器,我正在对它的索引进行一些工作

我有一个index.html.haml,我已经设法从资产管道(名为places.js.coffee)获取了coffeescript,但我还没有找到一种方法使ERB代码从中运行。我读到,如果咖啡脚本在你看来,这是可能的。我试图在控制器的视图中放置一个名为“index.js.coffee”的coffeescript文件,但它不起作用

我尝试创建的文件是:/app/views/places/index.js.coffee

我用错名字了吗?如果没有,我应该把文件放在哪里

我使用的是rails 4.0.2和coffee rails gem(4.0.1)

提前谢谢

编辑:

我试图实现的是使用erb将代码注入到js/coffee中,特别是一组用于填充图表中数据的数组

通常,我在places.js.coffee资产文件中会有类似的内容:

labelsvariable = gon.labels

jQuery ->
data = {
    labels : labelsvariable,
    datasets : [
        {
            fillColor : "rgba(220,220,220,0.5)",
            strokeColor : "rgba(220,220,220,1)",
            pointColor : "rgba(220,220,220,1)",
            pointStrokeColor : "#fff",
            data : [ 65,59,90,81,56,55,40 ]
        },
        ...
    ]
}
这是可行的,我可以为图表使用一些数据,但接下来我需要做更复杂的事情,比如填充数据集

我知道我可以用变量本身替换其中的许多变量,就像“labelsvariable”,但当我带来一组数组时,问题就来了,这些数组将包含在JQuery中的第二个数据组中。我想我可以用erb做一个循环,它可以遍历整个数组,替换整个数据集部分,为js/coffee转储适当的代码

我意识到我可能采取了错误的方法,但我只是想不出更好的办法将数据发送到那里。如能就此提出任何建议,将不胜感激

关于我最初的问题,是否可以在一个咖啡文件中这样运行雇员再培训局?如果是,也运行erb的coffee文件应该放在哪里


如果我听起来太含糊,请原谅,我真的很难解释这一点。谢谢。

您必须从视图中加载它的想法来自Rails文档(很抱歉,我把它弄丢了)(),该文档规定只有资产应该放在
资产管道中

将逻辑/条件(
erb
)代码加载到JS中的方法是在视图中包含这些文件,因为这是逻辑工作的唯一地方

这就剩下你的问题了


视图

如果你详细说明你想做什么,你会得到一个更好的答案

我将解释如何从视图中调用JS。唯一的方法是使用Ajax调用页面(它发送JS mime类型),如下所示:

#app/controllers/your_controller.rb
def action
   respond_to do |format|
       format.html
       format.js # loads action.js.erb IF you send a JS (ajax) request type
   end
end

如果您提供更多关于您正在尝试做的事情的信息,我可以给您一些关于如何实现的具体想法

不能同时呈现
index.html.erb/haml
index.js.coffee
。与前面提到的另一个答案一样,您通常会在正常页面加载时呈现
.erb
文件,并在已经加载的页面上呈现
.js
文件以运行Javascript作为对AJAX请求的响应

我不确定我是否100%理解您想要实现的目标,但是您是否可以将数据输出到某个地方的HTML中,然后使用jQuery从HTML中提取数据?大概是这样的:

#app/controllers/your_controller.rb
def action
   respond_to do |format|
       format.html
       format.js # loads action.js.erb IF you send a JS (ajax) request type
   end
end
在index.html.erb中:

<div id="chart" data-datasets="<%= @data.to_json %>">
  Blah blah blah.
</div>
$ ->
  datasets = $("#chart").data("datasets")

  data = {
    labels : labelsvariable,
    datasets : datasets
  }
我不知道从何处提取
数据集
数据,但您可能需要创建一个自定义方法(即,除了
到_json
)之外的其他方法),该方法将以javascript能够理解的格式输出数据


在HTML中,您不必将
数据集
属性放在
标记上,我会将它放在与页面中使用数据的部分相关的地方。

基本上,我尝试运行一个循环来从数组中读取数据,使用erb而不是coffescript/javascript。其中一个原因是,我觉得使用erb更舒服,但也因为我不知道如何分解数组来填充在js/coffee下处理的JQuery函数。JQuery函数用于填充使用chart.js制作的图表的数据。我将更新这个问题来说明这一点。那么你真的在寻找如何将Rails变量移植到JS中?你可能想看看做这个:)做那个。当我看到你的回答时,我正在第二次编辑这个问题。我使用的是gon,但我不知道如何使用前面提到的数组。JQuery与Rails非常相似——我将采用与Rails相同的方法,并转换为JS。我会看看你的答案,看看我能不能为你提供些什么!