2012-11-18 217 views
0

我有一個愚蠢的問題:我有一個JavaScript文件,它具有一些JavaScript常量(用於所有JavaScript代碼),這些常量是從rails中「提取」的。預編譯js.erb文件或在沒有預編譯的情況下加載

代碼很簡單:

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/' 
}; 

的問題是,我的文件不會被預編譯,這是很奇怪的,因爲裏面的文件,我使用的東西,只是配置選項,無數據庫或類似的。

所以我的問題是,我該如何解決這個問題?有沒有辦法強制編譯該文件與所需的常量,或有任何方式來加載它沒有被編譯?

回答

0

解決「以其他方式」。你不能這樣做,你需要在你的application.html.erb中移動這些常量或者通過AJAX加載它們。

+0

運行'rake assets:precompile'預編譯我的js.erb到應用程序-... js –

+0

您使用rails 4嗎?這可能是不同之處。 –