2016-06-17 29 views
0

私はRails 4アプリを持っていて、私はCarrierWaveを使ってURLから画像を取得しています。私のform_forでは、URLはparamsに渡されますが、保存するURLを取得できないようです。最後のStampを見てみると、remote_image_urlnilです。私はそれが何か簡単だと確信していますが、ドキュメントはかなり悲惨です。CarrierWave remote_image_url保存しない

確認するだけです。フォーム内のf.file_fieldを使用してファイルから画像をアップロードするとき、CarrierWaveは完全に機能します。ここで

私のコードです:

stamp_uploader.rb

class Stamp < ActiveRecord::Base 
    mount_uploader :image, StampUploader 
    mount_uploader :remote_image_url, StampUploader 
end 

stamps_controller

def show 
    @stamp = Stamp.find(params[:id]) 
end 

def new 
    @stamp = Stamp.new 
end 

def create 
    @stamp = Stamp.create(stamp_params) 

    if @stamp.save 
     flash[:success] = "Thanks for your submission!" 
     redirect_to root_path 
    else 
     render :new 
    end 
end 

private 

def stamp_params 
    params.require(:stamp).permit(:image, :remote_image_url) 
end 

new.html.erb

<%= form_for @stamp do |f| %> 
    <%= image_tag(current_user.image) %> 
    <%= f.label :remote_image_url, "Upload Image" %> 
    <%= f.text_field :remote_image_url, value: current_user.image %> 

    <%= f.submit %> 
<% end %> 

schema.rb

create_table "stamps", force: :cascade do |t| 
    t.string "image" 
    t.datetime "created_at",  null: false 
    t.datetime "updated_at",  null: false 
    t.string "remote_avatar_url" 
    t.string "remote_image_url" 
end 

のparams:

=> {"utf8"=>"✓", 
"authenticity_token"=>"rA8KaI+bG5ygldeQC2n00z3BuEfiA0xO4tukUUL3tvG19G7WQCuMMqwzwWzWSMbKlT+2W5KsJYF4Q/lXg9OHeA==", 
"stamp"=>{"remote_image_url"=>"https://graph.facebook.com/10157057736060574/picture?width=1000&height=1000"}, 
"commit"=>"Create Stamp", 
"controller"=>"stamps", 
"action"=>"create"} 
+0

あなたのコントローラが(レールコンソールから)受け取るパラメータを投稿できますか? – RichardAE

+0

確かに、主な質問に追加 – BillyBib

答えて

0

私はあなたのラインmount_uploader :remote_image_url, StampUploaderがそれを台無しにするものだと思います。それを取り除き、物事がうまくいくかどうか確認してください

あなたがmount_uploader :foo, StampUploaderをしたとき、私はCarrierWaveが(とりわけ)foo=remote_foo_url=の方法を定義していると信じています。

後でmount_uploader :remote_image_url, StampUploaderを実行すると、URLではなくファイル名が必要であるにもかかわらず、別の方法で取得したremote_image_url=メソッドを上書きしてしまいます。

これが役に立ちましたら、明らかになった場合は、CarrierWaveにプルリクエストしてドキュメントを明確にするように依頼することをお勧めしますか? :)

+0

うん、今すぐ完璧に動作! 'mount_uploader'を削除し、':remote_image_url'が ':image'カラムを使用しているので、データベースから対応するカラムも削除しました。 – BillyBib

関連する問題