4

アバターのアップロードに問題があります。一度はうまくいきましたが、今回は目が見えないに違いありません。私は paperclip と aws-sdk gem を使用しており、ここで説明されているようにすべてをセットアップしています。

2つのバケットでテストしました。1つは標準us-locationで、もう1つはeu-west-1場所です。どちらも機能していません。

これが私の関連するすべてのコードです:

config/s3.yml

development:
  bucket: ***
  access_key_id: ***  
  secret_access_key: ***
test:
  bucket: ***
  access_key_id: ***  
  secret_access_key: ***
production:
  bucket: ***
  access_key_id: ***  
  secret_access_key: ***

アプリ/モデル/art.rb

class Art < ActiveRecord::Base
  attr_accessible :created_at, :description, :name, :avatar
  has_attached_file :avatar,
      :storage => :s3,
      :s3_credentials => "#{Rails.root}/config/s3.yml",
      :url => ':set_alias_url',
      :path => "/:style/:id/:filename.:extension",
          :bucket => '***'

end

app/controller/arts_controller.rb

class ArtsController < ApplicationController 
...
def create
      @art = Art.new(params[:art])
      if @art.save
          flash[:notice] = "sucessfully saved upload" 
          redirect_to arts_path
      else 
          flash[:notice] = "error" 
          render "new"
      end

    ...

アプリ/ビュー/アート/new.html.erb

<h1>Arts#new</h1>
<p>Find me in app/views/arts/new.html.erb</p>
<%= form_for(@art, :url => arts_path, :html => { :multipart => true }) do |f| %>
    <%= f.label :name %> <br/>
    <%= f.text_field :name %> <br/>

    <%= f.label :description %> <br/>
    <%= f.text_field :description %> <br/>

    <%= f.label :avatar %> <br/>
    <%= f.file_field :avatar %> <br/>
    <%= f.submit %>
<% end %>

2 日間 Web を検索しましたが、エラーが見つかりません。サーバーからの応答は次のとおりです。

POST "/arts/new" for 127.0.0.1 at 2012-12-19 12:11:39 +0100
    Processing by ArtsController#new as HTML
      Parameters: {"utf8"=>"✓", "authenticity_token"=>"ZyZFfSaTl9CQpL5kOXyt/rcoi+SCuNp5/deCYda83sE=", "art"=>{"name"=>"asdf", 
"description"=>"asdf", 
"avatar"=>#<ActionDispatch::Http::UploadedFile:0x0000000296e0b8 @original_filename="lakritz10.jpg", 
@content_type="image/jpeg", 
@headers="Content-Disposition: form-data; name=\"art[avatar]\"; filename=\"lakritz10.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/tmp/RackMultipart20121219-5804-1rnvkmj>>}, 
"commit"=>"Create Art

誰でもこれを修正するのを手伝ってもらえますか?

前もって感謝します。

編集:添付ファイルがなくても、データベースに何も保存されていないようです。有線ですから…

EDIT_SOLUTION: 特定の問題を解決するために、routes.rb 以前に想定していたエントリを変更する必要がありました

match "arts/new", :to => "arts#new", :as => 'arts'

仕事をするでしょう。そうではありませんでした。行を次のように変更する必要がありました。

resources :arts

ルートがどのように機能するのかまだ正確に理解していないため、説明できません。

4

1 に答える 1

0

あなたの行:

match "arts/new", :to => "arts#new", :as => 'arts'

newアクションへのルートを作成するだけです。次に、フォームのターゲットにマップarts_pathします。リソースが新しいオブジェクトに対して自動的に行うarts/newフォームを送信する必要があります。arts#createPOST

于 2013-01-09T13:52:18.953 に答える