📅  最后修改于: 2023-12-03 15:04:56.746000             🧑  作者: Mango
在 Ruby on Rails 2.1 中,文件上传变得更加容易。Rails 内置了 Action Controller 和 Action View 功能,它们可以帮助我们简化文件上传业务逻辑。
我们可以使用 form_for
方法生成上传文件的表单,同时需要设置 multipart: true
来告诉 Rails 表单需要处理文件上传。
<%= form_for @user, url: { action: :create }, html: { multipart: true } do |f| %>
<%= f.label :avatar %>
<%= f.file_field :avatar %>
<%= f.submit %>
<% end %>
这样生成的表单可以上传文件。
在 Controller 中,我们需要处理上传文件,可以使用 params[:user][:avatar]
获取上传的文件,然后可以使用 File
类的 open
方法来处理上传的文件。
def create
@user = User.new(user_params)
if params[:user][:avatar]
uploaded_io = params[:user][:avatar]
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
file.write(uploaded_io.read)
end
@user.avatar = uploaded_io.original_filename
end
if @user.save
redirect_to @user
else
render :new
end
end
在上面的代码中,uploaded_io.original_filename
可以获取上传文件的文件名,我们可以将其保存在数据库中,在后续的展示页面中使用。
我们可以使用 image_tag
或者 link_to
帮助我们展示上传的图片或者文件。
<%= image_tag @user.avatar_path if @user.avatar_path %>
这样就可以在视图中展示上传的图片了。
使用 Rails 2.1 进行文件上传非常简单,只需要使用 form_for
方法上传文件,然后在 Controller 中使用 params[:user][:avatar]
就可以获取上传的文件,最后需要展示上传的图片或者文件可以使用 image_tag
或者 link_to
方法进行展示。