预编译时从js.erb文件访问模型

时间:2012-10-15 17:58:34

标签: ruby-on-rails asset-pipeline precompile

我有一个Rails 3应用程序,我试图用我的数据库中的每个Nation(少于300个国家)填充javascript变量作为JSON对象。这是我nations.js.erb文件中的相关行:

_this.nations = <%= Nation.all.to_json :only => [:id], :methods => :text %>;

当我在浏览器中调用我的js文件时/assets/users.js需要民族文件,_this.nations变量完全填充。当我尝试进行预编译时,我得到以下内容:

$> rake assets:precompile
$> rake aborted!
uninitialized constant Nation (in nations.js.erb)

所以我的问题是:是否可以在Nation文件中引用js.erb模型或任何模型进行预编译?我也尝试使用我的NationsHelper,但我的错误只是改为未初始化的常量NationsHelper。

我对RoR很新,所以如果需要我没有提供相关信息,请直接询问。

2 个答案:

答案 0 :(得分:7)

如果某个地方config.assets.initialize_on_precompile设置为false,请尝试启用

config.assets.initialize_on_precompile = true

答案 1 :(得分:0)

为什么不在控制器中进行呼叫

控制器

@nations = Nation.all

nations.js.erb

_this.nations = <%= @nations.all.to_json :only => [:id], :methods => :text %>;