了解 rails 代码运行的地点和时间(js.erb)

understanding where and when rails code runs( js.erb)

我需要解释 javascript 文件中的 ruby 代码是如何在 rails 中执行的。 我需要知道为什么下面的代码会 运行

var path = '<%= "#{Rails.root}/public/time_table/time_table.json" %>';

<% file = File.new("#{Rails.root}/public/time_table/time_table.json",'r') %>

不会。 JavaScript 文件何时何地在 rails 中执行。 当应用程序在 filename.js.erb 文件中看到 ruby 代码语法时,它如何处理它。请我真的需要这个解释。

JavaScript在浏览器中执行。 js.erb 文件是将在浏览器中发送和执行的代码的 模板

在您的第一个示例中,ERB 模板将导致:

var path = '/path/to/root/public/time_table/time_table.json';

此 JavaScript 将由浏览器发送 运行。

在您的第二个示例中,您不会在输出中插入任何文本(您使用 <% 而不是 <%=)。 <%%>之间的代码是Ruby。它打开文件进行读取并分配给 file它不读取文件或以其他方式将任何内容插入输出

通常,ERB 用于生成将发送到浏览器的内容。 html.erb 用于 HTML 代码。 js.erb 用于 JavaScript 代码。模板在服务器上展开,结果输出发送到浏览器。

根据评论添加。要显示文件的内容,您需要阅读它。 File.new 只是打开它并允许您操作文件(读、写、t运行cate 等)。我建议您使用 File.read 阅读文件并将其插入模板:

<%= raw File.read("#{Rails.root}/public/time_table/time_table.json") %>

您也可以考虑将文件移动到部分文件,例如app/views/time_tables/_time_table.json.erb 并在控制器中渲染:

render partial: 'time_tables/time_table.json.erb'