首页 文章

Rails Carrierwave:无法使用after_action方法保存完整的URL

提问于
浏览
0

我想使用CarrierWave gem在rails应用程序中保存上传图像的完整URL . 我在创建操作之后更新条目,但它不起作用 . 但是,当我输入我的变量时,会显示完整的URL,但它只保存标识符...

卡控制器,after_action方法:

class CardsController < ApplicationController
  before_action :set_card, only: [:show, :edit, :update, :destroy]
  after_action :save_full_image_url, only: [:create, :update]

  include Shortener
  require 'carrierwave/orm/activerecord'

  def save_full_image_url
    c = @card
    puts "URL: "+c.image_url.url

    @card.update(image_url: c.image_url.url)

    Rails.logger.info(@card.errors.inspect)
  end

我的卡片型号:

class Card < ApplicationRecord
  validates :cta_button_url, :format => URI::regexp(%w(http https)), presence: { message: '%{value} : please enter valid url' }
  validates :title, :subtitle, :cta_button_text, :cta_button_url, :presence => true
  mount_uploader :image_url, ImageUploader
  has_one :short_url
end

我的完整日志:

SQL(0.3ms)INSERT INTO“cards”(“letter_id”,“title”,“subtitle”,“image_url”,“cta_button_text”,“cta_button_url”,“share_button”)VALUES(?,?,?,?, ?,?,?)[[“letter_id”,49],[“title”,“fsddssd”],[“subtitle”,“fsdfsdfsd”],[“image_url”,“10298593.jpg”],[“cta_button_text “,”访问网站“],[”cta_button_url“,”http://www.testurl.com“],[”share_button“,”t“]](1.1ms)提交事务(0.1ms)开始事务卡加载(0.2ms)SELECT“cards” . * FROM“cards”WHERE“cards” . “id”=?限制? [[“id”,44],[“LIMIT”,1]] SQL(0.4ms)INSERT INTO“short_urls”(“card_id”,“token”,“created_at”,“updated_at”)VALUES(?,?, ?,?)[[“card_id”,44],[“token”,“PmK5vnuCU9Dczz995fz8Ddbf”],[“created_at”,“2017-08-08 21:08:57.625325”],[“updated_at”,“2017- 08-08 21:08:57.625325“]](0.8ms)提交事务字母加载(0.2ms)SELECT”letters“ . * FROM”letters“WHERE”letters“ . ”id“=?限制? [[“id”,49],[“LIMIT”,1]](0.1ms)开始事务CoreBot加载(0.2ms)SELECT“core_bots” . * FROM“core_bots”WHERE“core_bots” . “id”=?限制? [[“id”,1],[“LIMIT”,1]](0.1ms)提交事务重定向到http:// localhost:3000 / dashboard / test URL:http:// localhost:3000 / uploads / card / image_url / 44/10298593.jpg(0.1ms)开始事务SQL(0.4ms)UPDATE“cards”SET“image_url”=?在哪里“卡” . “id”=? [[“image_url”,“10298593.jpg”],[“id”,44]](2.5ms)提交事务“10298593.jpg”,cta_button_text:“访问网站”,cta_button_url:“http://www.testurl .com“,share_button:true>,@ messages = {},@ details = {}>完成302在60ms内找到(ActiveRecord:7.2ms)

当我登录控制台"c.image_url.url"时,我得到了完整的URL(http://localhost:3000/uploads/card/image_url/44/10298593.jpg)但是当我更新我的条目时,它只保存了结尾(10298593.jpg) .

知道为什么我无法保存整个网址,即使我之前可以在变量中获取它吗?

1 回答

  • 0

    问题解决了!问题来自 mount_uploader :image_url, ImageUploader

    我创建了一个“remote_image_url”并用完整的url更新了它 . 现在它有效!

相关问题