在rails 3.1应用程序中,我的html表有3个不同的javascript文件。比方说,表1.js.coffee,表2和表3。
在我的application.js文件中,我有:
// = require table
在我的table.js.coffee.erb中,我想做一些类似的事情:
// = require <%= 'table2' %>
// or (more useful)
// = require <%= Settings.js_table %>
像这样,我将能够从外部配置文件更改表的行为。目前,它不起作用。我想知道这是否可能?
谢谢!
它不起作用。
管道中的文件是在第一次请求时根据当时的内容(以及任何已解析的erb)进行编译的。
如果您引用了管道文件中的某个内容,那么如果在其他地方发生更改,它将不会更新。
编辑以回应评论:
对不起,我本应该更清楚的。一般情况下是行不通的。
在将其与require一起使用的情况下,require
语句是Sprockets特定的指令。在erb处理程序得到它之前,它由Sprockets处理
该指令需要一个参数-字符串。在这种情况下,您已经向require指令传递了3个参数:一个开始的erb标记、一个带引号的字符串和一个结束的erb标签。
这就是为什么你会得到一个3对1的论点错误。
在运行时动态包含文件的最佳(也是可能的)唯一方法是从视图层。