预编译js.erb文件或加载而不预编译它

时间:2012-11-18 16:12:35

标签: javascript ruby-on-rails ruby-on-rails-3

我有一个愚蠢的问题:我有一个javascript文件,它有一些javascript常量(用于所有的javascript代码),这些是从rails“获取”的。

代码很简单:

var CrossJavascriptSettings = {
  desktop_columns: <%= Rails.configuration.extjs_desktop[:icon_columns] %>,
  recaptcha_public_key: '<%= Recaptcha.configuration.public_key %>',
  tasks_icon_image: '<%= image_path('icons/Clock.png') %>',
  no_image: '<%= image_path('icons/Delete.png') %>',
  loading_image: '<%= image_path('ext-icons/loading.gif') %>',

  loading_image_preloaded: new Image().src = '<%= image_path('ext-icons/loading.gif') %>',
  no_image_preloaded: new Image().src = '<%= image_path('icons/Delete.png') %>',
  tasks_icon_image_preloaded: new Image().src = '<%= image_path('icons/Clock.png') %>',

  available_roles: <%= Rails.configuration.available_roles.each_with_index.collect { |element, index| [index, element] }.as_json %>,

  organizations_logo_path: '/assets/organizations/logos/'
};

问题是我的文件没有得到预编译,这很奇怪,因为在文件中,我使用的东西只是配置选项,没有databsae或类似。

所以我的问题是,我该如何解决这个问题?有没有办法强制用所需的常量编译该文件,或者有没有办法加载它而不进行编译?

1 个答案:

答案 0 :(得分:0)

以“另一种方式解决”。你不能这样做,你需要在application.html.erb中移动这些常量或通过AJAX加载它们。