2017-01-26 3 views
1

Hey Leute, ich habe versucht, die Antwort auf mein spezifisches Problem zu suchen und konnte keine Lösung finden. Ich habe alles versucht. Ich habe ein Geschenkmodell mit Büroklammer, um ein Bild zu speichern. Die Geschenkinstanz wird von einem Amazon-Modell bevölkert (das die Informationen aus der Amazon API für Produktdetails einschließlich Bild, Name und Preis erfasst), aber ich kann das Bild nicht in S3 speichern. Ich denke, dass mein Problem damit zu tun hat, dass die Büroklammer es auf der "neuen" Route in meinem Geschenk-Controller in einen Amazon S3-Link konvertiert, im Gegensatz dazu, wenn es tatsächlich das Geschenk schafft. hier einige Code:Versuch, mit Paperclip & Amazon API in S3 zu speichern

class GiftsController < ApplicationController 
    skip_before_action :verify_authenticity_token 
    before_action :amazon_url, only: [:new, :new_extension] 
    before_action :authenticate_user! 

    def new 
    @friend = Friend.find_by_id(params[:id]) 
    if @gift_data.failure == nil 
     @gift = Gift.new(
      name: @gift_data.name, 
      image: @gift_data.image, 
      price: @gift_data.price 
    ) 
    else 
     @gift = Gift.new() 
     if params[:search] 
     @failure = @gift_data.failure 
     respond_to do |format| 
      format.html 
      format.json { render :json => {gift: @gift} } 
     end 
     end 
    end 
    end 

und mein Geschenk Modell:

class Gift < ActiveRecord::Base 
    belongs_to :category 
    has_many :ideas 
    has_many :friends, :through => :ideas 
    # this friends association doesn't work, need to troubleshoot more or figure that out 
    # also figure out whether we need it 
    has_many :goods 


    has_attached_file :image, 
        :storage => :s3, 
        :styles => { :medium => "370x370", :thumb => "100x100" } 
        validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/ 

    validates_presence_of :name 
    # validates_presence_of :category_id 
    # validates :url, :url => {:allow_blank => false} 
    # validates :price, presence: true, format: {with: /\A\d+(?:\.\d{0,2})?\z/}, numericality: {greater_than: 0, less_than: 1000000} 

end 

Ich habe versucht, ein Verfahren, bei dem Geschenk Modell Hinzufügen des Link URI.parse aber es funktioniert nicht. Sogar versucht, es im Geschenk-Controller auf dem Bild zu tun, aber das hat auch nicht funktioniert. Ich gehe davon aus, dass die Büroklammer das Bild auch dann verarbeitet, wenn es noch nicht erstellt wurde und ich das Geschenk danach nicht einmal erstellen kann. Würde eine Anleitung schätzen!

+0

Hm, ich bin etwas fehlt vielleicht, aber wo bist du @gift sparen? Sie erstellen es. aber wo ist sicher? Sie sollten hinzufügen .save (Gift.new (params) .save) – denys281

+0

die neue Route speichert es noch nicht. Ich habe eine create-Methode, die das tut – LeChiffre

Antwort

0

Ich habe es herausgefunden. Es wurde eine Zeile image_url in Tabelle hinzugefügt und dann URI.parse (image_url) verwendet, um sie im Image zu speichern und in S3 zu speichern.