2016-06-17 12 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 %> 

여기

내 코드입니다 55,413,:

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