【发布时间】:2013-01-09 21:52:18
【问题描述】:
我的头像上传有问题。它曾经对我有用,但这次我必须是盲人。 我正在使用回形针和 aws-sdk gem 和 set up everything as described here.
我已经用 2 个水桶对其进行了测试。一种使用标准us-location,另一种使用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: ***
app/model/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
...
app/views/arts/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 天,但找不到我的错误。这是来自服务器的响应:
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
因为我还不明白路线究竟是如何工作的,所以我无法解释。
【问题讨论】:
-
提交表单时传递了哪些参数,请在控制台中查看
-
好的,这是一个路由问题。我将我的艺术路线改为资源:艺术,现在一切都很完美。我想我必须了解路由的工作原理以及如何手动添加 put/get/match 路由。不过感谢您的回复。
-
@schnika。请将您的解决方案添加为答案,以免显示为未回答。
标签: ruby-on-rails ruby-on-rails-3 amazon-s3 paperclip