即使使用开箱即用的基本教程单图像示例,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
有什么想法吗?
答案 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,每一个小评论都很重要。