在我的模型中,我使用回形针将头像附加到我的用户上:
has_attached_file :avatar,
:styles => {square_tiny: '50x50#', square_small: '100x100#', square: '200x200#'}我有一张表格
<%= form_for(@user_profile,
:url => { :controller => :user_profiles, :action => :update_general_info, :id => @user_profile.id },
:html => { :multipart => true,
:class=> "form-horizontal" }) do |f| %>
<div class="control-group">
<%= f.label :avatar, :class => "control-label" %>
<div class="controls">
<%= f.file_field :avatar %>
</div>
</div>
....
<% end %>上传工作很完美,但是我回来编辑我的用户,文件字段显示‘没有选择文件’。由于我正在验证那个头像的存在,所以每次用户编辑他的详细信息时,他都必须再次上传他的头像……
我该如何解决这个问题呢?
我以为:multipart => true能帮上忙,但它没有。
发布于 2013-03-28 20:59:25
对于页面来说,绝对没有好的方法来设置文件字段的值,这是出于安全原因。
如果浏览器允许页面或JS脚本为文件字段设置值,这将允许恶意页面使用某些系统或密码预置文件字段的值。这将是一个巨大的安全漏洞。
在这种情况下,我所做的是将已经保存的文件显示为用户可以单击下载的链接。然后,您可以提供一些小的AJAX链接来删除(通过AJAX调用删除文件,并用新的文件输入替换链接)和替换(用文件输入替换链接)。
最后一个选项是使用AJAX上传文件。如果您使用AJAX上传文件,您将POST到一个隐藏的框架,这样文件输入将保持其选定的值。无论哪种方式,请记住,对文件字段值的任何更改都必须由用户发起。
https://stackoverflow.com/questions/13824156
复制相似问题