预编译时从 js.erb 文件访问模型
Posted
技术标签:
【中文标题】预编译时从 js.erb 文件访问模型【英文标题】:Accessing a Model from js.erb file when precompiling 【发布时间】:2012-10-15 17:58:34 【问题描述】:我有一个 Rails 3 应用程序,我试图用我数据库中的每个国家(少于 300 个国家)作为 JSON 对象填充一个 javascript 变量。这是我的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)
所以我的问题是:是否可以从js.erb
文件中引用Nation
模型或任何模型进行预编译?我也尝试使用我的NationsHelper
,但我的错误只是更改为未初始化的常量 NationsHelper。
我对 RoR 还很陌生,所以如果需要我没有提供的相关信息,请直接询问。
【问题讨论】:
【参考方案1】:如果您在某处将config.assets.initialize_on_precompile
设置为false
,请尝试启用它
config.assets.initialize_on_precompile = true
【讨论】:
这出人意料地不影响 Heroku 的 intialize_on_precompile 问题。【参考方案2】:你为什么不在控制器中拨打电话
控制器
@nations = Nation.all
nations.js.erb
_this.nations = <%= @nations.all.to_json :only => [:id], :methods => :text %>;
【讨论】:
以上是关于预编译时从 js.erb 文件访问模型的主要内容,如果未能解决你的问题,请参考以下文章
Rails:在 CoffeeScript 或 JavaScript 资产文件中访问控制器实例变量
weblogic对JSP预编译weblogic读取JSP编译后的class文件ant中jspc预编译JSP