2017-01-26 8 views
1

ちょっと私の特定の問題の解決策を探してみて、解決策を見つけることができませんでした。私はすべてを試みた。 画像を保存するクリップが付いたギフトモデルがあります。ギフトのインスタンスはAmazonモデル(イメージ、名前、価格などの製品の詳細についてはamazon apiからの情報を取り込みます)によって作成されますが、S3に保存することはできません。 私の問題は実際にギフトを作成するときとは対照的に、ギフトコントローラの「新しい」ルート上のamazon S3リンクにそれを変換しているという事実と関係していると思います。Paperclip&Amazon 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行をtableに追加し、URI.parse(image_url)を使用してイメージに保存し、S3に保存しました。

関連する問題