我的web应用程序有问题。我在AWS S3上的所有上载都可以工作,但在下面的表单中,文件正确保存在数据库中,但在S3上没有。
表单代码(views/users/show.html.haml):
= simple_nested_form_for @user, :url => save_reply_classaction_opponent_user_path(@classaction, @user.opponent, @user), :html => {:multipart => true} do |f|
= f.simple_fields_for :reply, @reply do |builder|
= hidden_field_tag :filter_name, @filter_name
= hidden_field_tag :filter_type, @filter_type
%dt= builder.label "Statut", required: false
%dd= builder.input :state, as: :select, label: false, collection: ["Remboursement effectué", "Demande de remboursement acceptée / En cours", "Remboursement partiel", "Demande rejetée"], include_blank: false
%dt= builder.label "Montant du remboursement", required: false
%dd= builder.input :redemption_amount, :placeholder => "Montant en euros", as: :string, label: false
%dt= builder.label "Date du remboursement", required: false
%dd= builder.input :redemption_date, as: :date, start_year: Time.now.year, end_year: Time.now.year-5, discard_day: false, order: [:day, :month, :year], label: false
%dt= builder.label "Justificatif", required: false
%dd= builder.input :redemption_proof, as: :file, label: false
- unless @reply.redemption_proof_file_name.nil?
%dd= link_to(@reply.redemption_proof_file_name, @reply.redemption_proof.url, :target => "_blank")
%dt= builder.label "Commentaires", required: false
%dd= builder.input :note, as: :text, label: false
.clearfix
= f.submit "Valider la réponse", :class => "le-button button-2"
模型“回复”代码(models/Reply.rb):
# encoding: utf-8
class Reply
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Paperclip
include Mongoid::MultiParameterAttributes
field :state, type: String
field :redemption_amount
field :redemption_date, type: Date
field :note, type: String
has_mongoid_attached_file :redemption_proof,
:storage => :s3,
:path => "/redemption_proofs/:hash.:extension",
:hash_secret => "jojgHojKbjspvuufRsey78jkHj278",
:s3_credentials => File.join(Rails.root, 'config', 's3.yml')
embedded_in :user, inverse_of: :reply
end
模型“用户”代码(models/User.rb):
# encoding: utf-8
class User
include Mongoid::Document
include Mongoid::Timestamps
field :first_name
field :last_name
field :email
field :token
field :disabled_at, type: DateTime
embedded_in :opponent, :inverse_of => :users
embeds_one :reply
accepts_nested_attributes_for :reply
end
用户控制器(controller/users_controller.rb):
def show
if @user.reply.nil?
@reply = @user.build_reply
else
@reply = @user.reply
end
end
def save_reply
@filter_name = params[:filter_name]
@filter_type = params[:filter_type]
if @user.update_attributes(params[:user])
redirect_to classaction_opponent_user_path(@classaction, @opponent, @user, :moderation => '1', :filter_name => @filter_name, :filter_type => @filter_type)
end
end
下面是表单验证后我在控制台中看到的:
已启动PUT
“/action de groupe/commands non-livrees/opers/52d3e7622c1bb94852000009/users/52dd20d52c1bb96e6800000d/save_reply”
用于2014年2月28日15:01:01+0100的127.0.0.1
由UsersController#save_reply作为HTML进行处理
参数:{“utf8”=>“”,
“真实性_token”=>“QHTxNr27NMBsbND66Rfwde/cPMV06d9T6WEIjIPagc=”,
“过滤器名称”=>“”,“filter_type”=>“with_profile”,
“用户”=>{“reply_attributes”=>{“state”=<“Remexchangement effectu”,
“赎回金额”=>“768”,“赎回日期(3i)”=>"24",
“赎回日期(2i)”=>“2”,“赎回日期(1i)”=>"2014",
“redemption_prof”=>#>,
“注释”=>“测试注释”,“id”=>“530b6c4b2c1b9cc5e000008”}},
“提交”=>“验证程序”,
“classaction_id”=>“命令非居住者”,
“opponent_id”=>“52d3e7622c1bb94852000009”,
“id”=>“52dd20d52c1bb96e6800000d”}
轻便摩托车:127.0.0.1:27017更新
database=class_actions_development collection=classactions
选择器={“_id”=>“52d3e7622c1bb94852000008”}
update={“$set”=>{“对手.0.users.12.updated_at”=<2014-02-28
14:01:01 UTC时,
“对手.0.users.12.回复.readmission_prof_file_name”=>“barbuk.jpg”,
“counters.0.users.12.reply.redemption_prof_content_type”=>“image/jpeg”,
“对手.0.users.12.回复.赎回_文件_大小”=>117083,
“对手.0.users.12.回复.赎回_ of_updated_at”=>2014-02-28
14:01:01 UTC,“对手.0.users.12.回复注释”=>“测试注释”}}
flags=[](0.1080ms)
下面是我在数据库中的文档“user”:
“reply”:{“_id”:ObjectId(“530b6c4b2c1bb9cc5e000008”),“note”:
“测试注释”,“赎回金额”:“768”,“兑换日期”:
ISO日期(“2014-02-24T00:00:00Z”),“赎回日期(1i)”:“2014”,
“赎回日期(2i)”:“2”,“赎回日期”(3i):“24”,
“redemption_prof_content_type”:“image/jpeg”,
“redemption_prof_file_name”:“barbuk.jpg”,
“redemption_prof_file_size”:117083,“redemption _prof_updated_at”
:ISODate(“2014-02-28T14:01:1.646Z”),“state”:“Remexchangement”
效应“}
同样,上传时Heroku上的日志:
2014-02-27T13:31:43.810211+0:00应用程序[web.1]:[AWS S3 404 0.11337 0
重试]
head_object(:bucket_name=>“classactions_production”,:key=>:“redemption_profs/530cdb6074581998b50002a/original.jpg”)
AWS::S3::错误::NoSuchKey无此类密钥
谢谢你的帮助!我希望这个案子能帮到某人。。。