Rails 4:Carrierwave为什么不上传/写入/保存图像?

时间:2015-08-08 20:40:19

标签: ruby-on-rails ruby-on-rails-4 carrierwave

即使使用开箱即用的基本教程单图像示例,Carrierwave也不会保存或写入或上传图像。代码的所有(基本)位都在正确的位置,并且它不会在前端抛出任何错误消息,看起来有效,保存新的'newsitem',但没有选定的图像。

控制台抛出:

Started PATCH "/newsitems/63" for ::1 at 2015-08-08 22:24:43 +0200
Processing by NewsitemsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"gbbna69pcZY1h8fG5s/4CdbFw48D0FakaWehZURUSFcfPPJcuamyduFLtazYvjlRrhXgurEirxceUSxoK4RQwg==", "newsitem"=>{"slug"=>"asdfasf", "source"=>"", "url"=>"", "item"=>"asdfasdf", "story_ids"=>["3", ""], "region_ids"=>["2", ""], "category_ids"=>["5", ""], "main"=>"24m-podemos-ballot-papers.jpg"}, "commit"=>"Update Newsitem", "id"=>"63"}
Newsitem Load (0.1ms)  SELECT

blah, blah, blah…

至关重要的是,为了避免你一直向右滚动,它会捡起来:

"main"=>"24m-podemos-ballot-papers.jpg"

但是在PATCH声明中,我们进入:

SQL (0.4ms)  UPDATE "newsitems" SET "main" = ?, "updated_at" = ? WHERE "newsitems"."id" = ?  [["main", nil], ["updated_at", "2015-08-08 20:24:43.490668"], ["id", 63]]

“新”,“编辑”和“显示”页面不会引发任何错误。 “新建”和“编辑”似乎让我添加图片,它会保存newsitem,然后在新页面上显示,但根本没有图像。因此,在表单字段和数据库之间,某些东西不起作用。

我检查确保':main'在newsitems控制器参数中:

def newsitem_params
  params.require(:newsitem).permit(:item, :main, :source, :slug, :url, :region_ids => [], :category_ids => [], :story_ids => [])
end

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,修好了。 Alfie的评论让我搜索与更新属性相关的事情,我找到了一个页面,其中有人提到由于表单设置而导致params被严重输入。所以我回去看看那个,然后看到......

关于' newsitems'表单,我原本试图将Carrierwave表单元素和html多部分内容放在现有的编辑表单中,如果你愿意,可以使用嵌套表单,这就是抛出更新方法,如下所示:

<%= form_for(@newsitem) do |f| %>
  rails error notice stuff
<%= form_for @newsitem, :html => {:multipart => true} do |f| %>
  old form + carrierwave stuff
<% end %>
<% end %>

答案只是:

<%= form_for @newsitem, :html => {:multipart => true} do |f| %>
  rails error notice stuff
  old form + carrierwave stuff
<% end %>

非常感谢Alfie,每一个小评论都很重要。