表单重新显示后,CarrierWave不保存上传

Haa*_*aaR 7 ruby upload ruby-on-rails carrierwave

我有一个rails应用程序,最初使用Paperclip进行文件上传,但是,当我看到CarrierWave显然在表格重新显示时有一个"持久上传"类型功能时,我决定尝试一下.

在我看来,我有以下几点:

= f.input :attachment
= f.hidden_field :attachment_cache
Run Code Online (Sandbox Code Playgroud)

如果表单验证失败并重新显示,则正确缓存文件,但是当我更正验证错误并重新提交时,不会处理附件.

Started POST "/section/model" for 127.0.0.1 at 2012-03-20 08:51:56 +0000
  Processing by Client::WishesController#create as HTML
  Parameters: {"utf8"=>"?", "authenticity_token"=>"zkdPQBsAnsNzx555rkwZ5+clfnLaXg+NtL+GdFei188=", "model"=>{"title"=>"Sample", "content"=>"Sample content", "contact_name"=>"Mr Sample", "contact_email"=>"sample@example.com", "attachment_cache"=>"20120320-0851-42559-1644/SampleAttachment.pdf"}, "commit"=>"Create Wish"}
  Client Load (0.3ms)  SELECT `clients`.* FROM `clients` WHERE `clients`.`id` = 1 LIMIT 1
   (0.2ms)  BEGIN
  SQL (0.4ms)  INSERT INTO `models` (`attachment`, `client_id`, `contact_email`, `contact_name`, `content`, `created_at`, `status`, `title`, `updated_at`, `upload_content_type`, `upload_file_name`, `upload_file_size`, `upload_updated_at`) VALUES (NULL, 1, 'sample@example.com', 'Mr Sample', 'Sample content', '2012-03-20 08:51:56', 'Unresolved', 'Sample', '2012-03-20 08:51:56', NULL, NULL, NULL, NULL)
Run Code Online (Sandbox Code Playgroud)

它似乎是通过params中的attachment_cache正确传递附件,但它没有保存附件,因为它没有params [:model] [:attachment]字段.

它没有说明在载波部分上的任何进一步的步骤,使得上传可以在CarrierWave GitHub上的表格重新显示中工作.

Ken*_*nny 2

尝试填充 avatar_cache 的值,以便当验证失败时,它将以以下形式预先填充:

= f.hidden_field :attachment_cache, :value => @model.attachment_cache
Run Code Online (Sandbox Code Playgroud)

@model你的模型名称在哪里

当多次重新加载同一表单时(即验证多次失败时),这似乎对我有用。我认为他们在文档中遗漏了这一点。