ruby-on-rails - 没有使用回形针和 aws-sdk gem 上传头像

标签 ruby-on-rails ruby-on-rails-3 amazon-s3 paperclip

我的头像上传有问题。它对我有用过一次,但这次我一定是瞎了。
我正在使用回形针和 aws-sdk gem 和 set up everything as described here.

我已经用 2 个桶对其进行了测试。一具标准us-location一个是 eu-west-1地点。 两者都不起作用。

这是我所有的相关代码:

配置/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

应用程序/ 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

    ...

应用程序/ View /艺术/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

因为我还不明白路由究竟是如何工作的,所以我无法解释它。

最佳答案

您的线路:

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

只创建到 new 的路由行动。它映射 arts_patharts/new这就是你的表单的目标。您确实需要将表格提交至 arts#create这是资源为 POST 自动执行的操作与一个新对象。

关于ruby-on-rails - 没有使用回形针和 aws-sdk gem 上传头像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13951495/

相关文章:

ruby-on-rails - Rails 乘客/tmp/文件夹权限被拒绝

ruby-on-rails - 使用 plupload 和 Rails 3 进行 Amazon S3 分段上传

ruby-on-rails-4 - 如何使用 StringIO 设置 content_type 以使用 PaperClip 上传到 S3

hadoop - 如何在 Hadoop 中创建从 1..N 开始的迭代器?

ruby-on-rails - 在 Ruby on Rails 中是否有检查 session 是否为空且等于某个变量的函数?

ruby-on-rails - Rails 3,回形针和从远程 url 上传图像

ruby-on-rails - 如何通过在 Expo 上运行的 React Native 应用程序连接到本地 Rails 后端?

ruby-on-rails - Rails 4 to_json 产生意外异常 nil 不是符号

ruby-on-rails-3 - 亚马逊S3大虾PDF

javascript - 上传到 S3 时错误的 XMLHttpRequest