2017-01-26 96 views
1

嘿傢伙我試過查找我的具體問題的答案,並找不到解決方案。我嘗試了一切。 我有一個有回形針來保存圖像的禮物模型。禮品實例由亞馬遜模型(從亞馬遜api獲取產品詳細信息,包括圖像,名稱和價格)填充,但我無法將圖像保存到S3。 我認爲我的問題與事實有關,回形針將它轉換爲我的禮物控制器中「新」路線上的亞馬遜S3鏈接,而不是實際創建禮物。 這裏的一些代碼:試圖用回形針和亞馬遜API保存到S3

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 

和我的禮物型號:

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 

我試過在禮品模型添加一個方法來URI.parse鏈接,但它不工作。甚至試過在圖像上的禮物控制器上做,但也沒有效果。我假設回形針正在處理圖像,即使它尚未創建,甚至不會讓我以後創建禮物。希望能得到一些指導!

+0

嗯,我有些想念可能,但你在哪裏保存@gift?你創建它。但保存在哪裏?你應該添加.save(Gift.new(params).save) – denys281

+0

新路線還沒有保存它。我有一個創建方法 – LeChiffre

回答

0

想通了。最後在表格中添加image_url行,然後利用URI.parse(image_url)將其保存到圖像,並將其保存到S3。