请我需要说明javascript文件中如何在Rails中执行Ruby代码。我需要知道为什么下面的代码将运行
var path = '<%= "#{Rails.root}/public/time_table/time_table.json" %>';
和
<% file = File.new("#{Rails.root}/public/time_table/time_table.json",'r') %>
不会。JavaScript文件在轨道上执行的何时何地。当应用程序在 filename.js.erb 文件中看到Ruby Code语法时,它是如何对待它的。请我真的需要这种解释。
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
只是打开它,允许您操纵文件(读,写,截断等)。我建议您使用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'