アップロードした画像のURLをCarrierWaveの宝石を使ってレールアプリに保存します。作成アクションの直後にエントリを更新しますが、動作しません。しかし、私は私の変数を置くとき、完全なURLが表示されますが、それは唯一の識別子が保存されます...Rails Carrierwave:after_actionメソッドで完全な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) "カード"( "letter_id"、 "タイトル"、 "サブタイトル"、 「IMAのINSERT INTO ["letter_id"、49]、["title"、 "fsddssd") VALUES(?、?、?、?、?、?)["cta_button_text"、 "訪問サイト"]、["cta_button_url"、 ""]、["share_button"]、[fsdfsdfsd "]、[fsdfsdfsd] "、" t "]](1.1ms)コミット トランザクション(0.1ms)開始トランザクションカードロード(0.2ms)SELECT " cards "。* FROM" cards "どこ" cards "、" id "=?リミット? ( "card_id"、 "トークン"、 "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]]トランザクション開始CoreBot Load(0.2ms) SELECT" core_bots "。* FROM" core_bots "WHERE" core_bots "。" id "= ? LIMIT? http://localhost:3000/uploads/card/image_url/44/10298593.jpg
(0.1ms)トランザクションSQLを開始(0.4ms)UPDATE "カードは" を設定します。[[ "ID"、1]、[ "LIMIT"、1]](0.1ms)トランザクションコミット はhttp://localhost:3000/dashboard/test URLにリダイレクト"image_url" =?どこの "cards"。 "id" =? [[ "IMAGE_URL"、 "10298593.jpg"]、[ "ID"、44]](2.5msで)コミットトランザクション"10298593.jpg"、cta_button_text: "訪問サイト"、cta_button_url: メッセージ= {}、 @details = {}> 60ミリ秒で発見302を完成@真>: "http://www.testurl.com"、share_button(ActiveRecordの:7.2ms)
Iコンソール「c.image_urlログイン
。 URL "私は完全なURL(http://localhost:3000/uploads/card/image_url/44/10298593.jpg)を取得しますが、私が自分のエントリーを更新すると、最後(10298593.jpg)のみが保存されます。
なぜ私は以前に変数で取得できたとしても、URL全体を保存できないのですか?
エラーは何ですか? –
エラーは発生しませんが、["image_url"、 "10298593.jpg"]の代わりに["image_url"、 "http:// localhost:3000/uploads/card/image_url/44/10298593] jpg "] – AlphaNico