5

我正在尝试在 DigitalOcean 服务器上的 Rails 4.0 中使用 ckeditor (4.0.6) 和 Using rails_admin (0.5.0)。

我已将它包含在 rails_admin.rb 初始化程序中,如下所示,它在我的本地以生产模式工作

  config.model Faq do
    field :display_order
    field :question
    field :answer, :ck_editor  
  end

但是在 DigitalOcean 上,当我进入 Rails_Admin 并尝试创建一个新的 FAQ 对象时,它不会加载 ckeditor,因为它找不到 js。

 http://dummy.com/assets/ckeditor/ckeditor.js?_=1381313244552 404 (Not Found)
rails_admin-5daa9b7b76a226bdfa46a07fdaf2d77d.js:3

我怎样才能解决这个问题?

4

2 回答 2

0

我不知道,你有没有预编译你的资产?

如果您从不同类型的主机(如 Heroku)切换,您可能会忘记必须手动预编译资产。不过,你很幸运——这很容易!

RAILS_ENV=production rake assets:precompile 如果遇到问题,请尝试运行以下命令:

RAILS_ENV=生产 rake assets:precompile:primary

来自https://www.digitalocean.com/community/articles/how-to-launch-your-ruby-on-rails-app-with-the-digitalocean-one-click-image

于 2013-10-28T02:55:01.560 回答
0

问题是因为 Rails assets compile 实际上在每个 CKeditor 文件的 assets 文件上添加了指纹,而 rails-admin 正在寻找文件的非指纹版本。

这个问题只发生在带有 ckeditor 的 rails 4 中。实际上 ckeditor gem 的Readme.md确实提到了这个问题以及如何解决它,但它并不完整。

要解决此问题,您可以编写一个 rake 文件来删除所有指纹并在部署期间运行它。

这是我解决此问题的解决方案。

使用以下代码在 lib/tasks/ckeditor.rake 中创建一个 rake 文件

namespace :ckeditor do
  desc 'Create nondigest versions of some ckeditor assets (e.g. moono skin png)'
  task :create_nondigest_assets do
    fingerprint = /\-[0-9a-f]{32}\./
    for file in Dir[File.join('public/assets/ckeditor', '**', '*.js'),
                    File.join('public/assets/ckeditor', '**', '*.js.gz'),
                    File.join('public/assets/ckeditor', '**', '*.css'),
                    File.join('public/assets/ckeditor', '**', '*.png'),
                    File.join('public/assets/ckeditor', '**', '*.gif')]
      next unless file =~ fingerprint
      nondigest = file.sub fingerprint, '.' # contents-0d8ffa186a00f5063461bc0ba0d96087.css => contents.css
      FileUtils.cp file, nondigest, verbose: true
    end
  end
end

对于 Capistrano 用户,请确保将其包含在 deploy.rb 中

desc 'copy ckeditor nondigest assets'
task :copy_nondigest_assets, roles: :app do
  run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} ckeditor:create_nondigest_assets"
end
after 'deploy:assets:precompile', 'copy_nondigest_assets'

对于 Heroku 用户,您需要在每次签入代码之前手动运行 rake 文件。确保在此之前执行您的 rake assets:precompile。

rake ckeditor:create_nondigest_assets

希望能帮助到你

于 2014-03-11T09:38:40.590 回答