Как дать отпечаток пути css в производственных рельсах 4

Я использую imgkit сделать снимок моей веб-страницы. Я бегу:

RAILS_ENV=production bundle exec rake assets:precompile Для прекомпиляции моих активов.

Весь файл app/assets каталог компилируется в public/assetsapplication.css составлено как application-7a23a105125768e41d9d24aee4553615.css,

Мой код контроллера:

  kit = IMGKit.new(render_to_string(:partial => 'form', :height => 200, :transparent => true, :quality => 10, :layout => false,:locals => {:project => @project}))
  #  t = kit.to_img(:png) 
  kit.stylesheets << "#{Rails.root.to_s}/public/assets/application.css"
  #file = kit.to_file(Rails.root + "public/pngs/" + "screenshot.png")
  file = kit.to_file(Rails.root + "public/assets/" + "screenshot.png")
  #send_file("#{Rails.root.to_s}/public/pngs/screenshot.png", :filename => "screenshot.png", :type => "image/png",:disposition => 'attachment',:streaming=> 'true')

Я не знаю как решить /public/assets/application.css ошибка не найдена...

Нет такого файла или каталога - public/assets/application.css

Я использую https://github.com/csquared/IMGKit/issues/36 чтобы получить CSS и работать в моем снимке

правки

def update
#@kit = IMGKit.new(render_to_string, width: 480, height: 800, :quality => 100)
  respond_to do |format|
   if @project.update(project_params)
    kit = IMGKit.new(render_to_string(:partial => 'form', :height => 200, :transparent => true, :quality => 10, :layout => false,:locals => {:project => @project}))
  #  t = kit.to_img(:png) 
  kit.stylesheets << "self.class.helpers.asset_path('application.css')"
    #file = kit.to_file(Rails.root + "public/pngs/" + "screenshot.png")
 file = kit.to_file(Rails.root + "public/assets/" + "screenshot.png")
 #send_file("#{Rails.root.to_s}/public/pngs/screenshot.png", :filename => "screenshot.png", :type => "image/png",:disposition => 'attachment',:streaming=> 'true')
    format.html { redirect_to root_path, notice: 'Flyer was successfully updated.' }
    format.json { render :show, status: :ok, locatioFlyern: @project }
  else
    format.html { render :edit }
    format.json { render json: @project.errors, status: :unprocessable_entity }
  end
 end
end

1 ответ

Решение

Ты можешь использовать Sprockets::Rails::Helper#asset_digest_pathнашел здесь. Поскольку вы находитесь в контроллере, у вас есть доступ к нему с

self.class.helpers.asset_digest_path('application.css')
# => "application-7a23a105125768e41d9d24aee4553615.css"

Так же, asset_path даст путь к файлу application.css

self.class.helpers.asset_path('application.css')
# => "/assets/application-7a23a105125768e41d9d24aee4553615.css"
Другие вопросы по тегам