Rails paperclip,编辑表单file_field未分配。

8

我使用了Paperclip将头像附加到我的用户模型中:

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会有所帮助,但事实并非如此。

你解决了这个问题吗? - waldyr.ar
1个回答

6

出于安全原因,页面绝对没有好的方法可以设置文件字段的值。

如果浏览器允许页面或JS脚本设置文件字段的值,那么恶意页面将可以预设文件字段值为某些系统或密码文件。这将是一个巨大的安全漏洞。

在这种情况下,我会显示已保存的文件作为链接,用户可以点击下载。然后,您可以提供一些小的AJAX链接来删除(使用AJAX调用删除文件并替换为新的文件输入)和替换(链接被替换为文件输入)。

您最后的选择是使用AJAX上传文件。如果您使用AJAX进行文件上传,则会POST到隐藏框架,以便文件输入保持其选定值。无论哪种方式,请记住任何对文件字段值的更改都必须由用户发起。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接