使用ActiveStorage库,可以在上传图片后获取图像的尺寸。以下是一个示例:
首先,确保已经在Gemfile中添加了ActiveStorage库,并运行bundle install
安装依赖。
# Gemfile
gem 'activestorage'
然后,运行rails active_storage:install
生成ActiveStorage的配置文件和迁移文件。
接下来,运行迁移文件rails db:migrate
来创建ActiveStorage的数据库表。
在模型文件中,使用has_one_attached
方法来添加一个附加的图像:
# app/models/model_name.rb
class ModelName < ApplicationRecord
has_one_attached :image
end
在控制器中,使用attach
方法将上传的图像附加到模型实例上:
# app/controllers/model_names_controller.rb
class ModelNamesController < ApplicationController
def create
@model_name = ModelName.new(model_name_params)
@model_name.image.attach(params[:image])
if @model_name.save
# 图像上传成功
redirect_to @model_name, notice: 'Model Name was successfully created.'
else
render :new
end
end
private
def model_name_params
params.require(:model_name).permit(:name, :description)
end
end
最后,在视图文件中,使用image_tag
方法来显示上传的图像,并使用variant
方法获取图像的尺寸:
<%= @model_name.name %>
<%= @model_name.description %>
<%= image_tag @model_name.image.variant(resize: "100x100") %>
<%= @model_name.image.variant(resize: "100x100").width %>
<%= @model_name.image.variant(resize: "100x100").height %>
这样就可以在上传后获取图像的尺寸了。