如何实现 "change your profile picture" 功能(服务器端)

How to implement "change your profile picture" feature (server side)

我正在尝试在我的项目中实现一项功能,以便用户可以更改他们的个人资料图片。我目前正处于前端一切正常的地步(当你将鼠标悬停在它显示相机的图像上时,当你点击它时,你可以通过你的计算机浏览到 select 一个图像文件)但是,在那之后它不起作用。 我不太确定如何处理服务器请求。

仅供参考 我正在使用 routes.rb 和控制器 .rb 文件来处理后端。 还, 我应该使用 iframe,而不是 html 中的表单标签吗?

谢谢!

您不需要 iFrame。在这种情况下,简单的 form-for ruby 助手会有所帮助。我建议您使用 gem 之类的文件上传 paperclip.

为您的记录创建模型:

class User < ActiveRecord::Base
  has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
  validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end

(我假设模型名称是用户)

使用生成器创建新迁移:

rails generate paperclip user avatar

更新您的 html 表格如下:

<%= form_for @user, :url => users_path, :html => { :multipart => true } do    |form| %>
  <%= form.file_field :avatar %>
<% end %>

然后在控制器中做如下改动:

def create
  @user = User.create( user_params )
end

private

def user_params
   params.require(:user).permit(:avatar)
end

要在页面上显示图像,请使用以下帮助程序:

<%= image_tag @user.avatar.url %>

这是 rails 在服务器端处理图片上传的最简单方法。您可以在回形针 github page.If 上阅读更多内容您不想使用 gem 然后有一个 ruby class FileUtils 可以帮助您实现相同的目标。