2016-06-17 90 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時,你用另一種方法覆蓋了你剛剛得到的remote_image_url=方法,儘管它的名字需要一個文件而不是URL。

如果這有幫助,我可以建議您向CarrierWave發出拉請求,以澄清文檔,如果您發現它們不清楚,可以向其付款嗎? :)

+0

是的,現在完美的工作!我刪除了'mount_uploader',並且我還從數據庫中刪除了相應的列,因爲':remote_image_url'使用':image'列。 – BillyBib

相關問題