Rails ArticlesController#create 中的载波多文件上传 Encoding::UndefinedConversionError
Rails carrierwave multiple file upload Encoding::UndefinedConversionError in ArticlesController#create
我是用railsgem 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
配置 _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
这里可以用文章创建一张图片
下面是尝试创建多个图像
- 将
article
table avatar
列更改为 avatars
改变_form.html.erb
<p>
<%= f.file_field :avatars, multiple: true%>
</p>
因为我使用的测试数据库是 sqlite3 所以,引用来自 cariierwave
class Article < ApplicationRecord
mount_uploader :avatar, AvatarUploader
serialize :avatars, JSON
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
我是用railsgem 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
配置 _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
这里可以用文章创建一张图片
下面是尝试创建多个图像- 将
article
tableavatar
列更改为avatars
改变_form.html.erb
<p>
<%= f.file_field :avatars, multiple: true%>
</p>
因为我使用的测试数据库是 sqlite3 所以,引用来自 cariierwave
class Article < ApplicationRecord
mount_uploader :avatar, AvatarUploader
serialize :avatars, JSON
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