CarrierWave是一个用于处理文件上传的Ruby库,它可以轻松地将文件上传到服务器,并提供了一些方便的功能来管理上传的文件。
具体来说,使用CarrierWave向Rails应用程序添加“添加更多文档功能”的步骤如下:
bundle install
来安装它。gem 'carrierwave'
rails generate uploader Document
这将在app/uploaders
目录下创建一个名为document_uploader.rb
的文件。
class DocumentUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def extension_whitelist
%w(pdf doc docx)
end
end
在上述示例中,文件将被存储在public/uploads
目录下,文件名将根据模型和上传字段的名称生成,只允许上传pdf、doc和docx文件。
Document
的模型,可以通过以下方式添加一个名为attachment
的文件字段:class Document < ApplicationRecord
mount_uploader :attachment, DocumentUploader
end
<%= form_with(model: @document, local: true) do |form| %>
<%= form.file_field :attachment %>
<%= form.submit 'Upload' %>
<% end %>
def create
@document = Document.new(document_params)
if @document.save
redirect_to @document, notice: 'Document was successfully created.'
else
render :new
end
end
private
def document_params
params.require(:document).permit(:attachment)
end
在上述示例中,document_params
方法用于获取上传的文件参数,并将其传递给Document
模型的创建动作。
这样,就可以向Rails应用程序添加“添加更多文档功能”了。用户可以选择文件并上传,文件将被保存到指定的位置,并与相应的模型关联起来。
腾讯云相关产品推荐:
领取专属 10元无门槛券
手把手带您无忧上云