簡體   English   中英

Rails載波多個文件上傳ArticlesController#create中的Encoding :: UndefinedConversionError

[英]Rails carrierwave multiple file upload Encoding::UndefinedConversionError in ArticlesController#create

我曾用過Rails gem carrierwave測試多個上傳圖片

下面是我一步一步

  • rails new TestUploadImages
  • rails g Article title:string body:text
  • rails generate uploader Avatar
  • rails g migration add_avatar_to_users avatar:string rake db:migrate

配置Article model uploader

class Article < ApplicationRecord
  mount_uploader :avatar, AvatarUploader
end

config _form.html.erb用於創建帶有圖像的文章

<%= form_for @article, html: {multipart: true} do |f| %>
    <p>
        <%= f.label :title %>
        <%= f.text_field :title %>
    </p>
    <p>
        <%= f.file_field :avatars%>
    </p>
    <p>
        <%= f.label :body %>
        <%= f.text_area :body %>
    </p>

    <p>
        <%= f.submit %>
    </p>
<% end %>

article_controller

class ArticlesController < ApplicationController
  def new
    @article = Article.new
  end

  def create
    @article = Article.new(article_params)
    @article.save
    render "show"
  end

  def show
    @article = Article.find(params[:id])
  end

  private 

  def article_params
    params.require(:article).permit(:title, :body, :avatar)
  end
end

在這里可以用文章創建一張圖片

下面是嘗試創建多個圖像
  • 更改articleavatar與列avatars

更改_form.html.erb

class Article < ApplicationRecord
  mount_uploader :avatar, AvatarUploader
  serialize :avatars, JSON
end

因為我使用的測試數據庫是sqlite3,所以來自cariierwave的引用

  def article_params
    params.require(:article).permit(:title, :body, {avatars: []})
  end

更改articles_controller的強參數

  def article_params params.require(:article).permit(:title, :body, {avatars: []}) end 

現在應該創建多個圖像

當我嘗試創建時發現此錯誤

在此處輸入圖片說明

和終端消息 在此處輸入圖片說明

在模型Article安裝avatars不是avatar

並將您的列avatar更改為:

def change
    remove_column :articles, :avatar
    add_column :articles, :avatars, :string, array: true, default: []
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM