了解Rails代码运行的何时何地(JS.ERB)



请我需要说明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'

最新更新