我试图在我的项目上实现一项功能,以便用户可以更改他们的个人资料图片。我目前处于前端所有东西都工作的位置(当你将鼠标悬停在显示摄像头的图像上时,当你点击它时,你可以浏览你的计算机来选择一个图像文件)然而,它不起作用那一点。 我不确定如何处理服务器请求。
FYI 我使用routes.rb和controller .rb文件来处理后端。 也, 我应该使用iframe,而不是html中的form tag吗?
谢谢!
答案 0 :(得分:2)
您不需要iFrame。在这种情况下,简单的form-for
ruby助手将有所帮助。我建议您使用像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
要在页面上显示图像anyware,请使用以下帮助程序:
<%= image_tag @user.avatar.url %>
这是在rails中处理服务器端图像上传的最简单方法。您可以在paperclip github页面上阅读更多内容。如果您不想使用 gem ,那么有一个ruby类FileUtils
可以帮助您实现相同的目标。