【问题标题】:Rails paperclip, Edit form file_field not assignedRails 回形针,编辑表单 file_field 未分配
【发布时间】:2012-12-11 16:22:23
【问题描述】:

我在我的模型中使用回形针将头像附加到我的用户身上:

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 =&gt; true 会有所帮助,但它没有。

【问题讨论】:

  • 这个问题你解决了吗?

标签: forms ruby-on-rails-3.1 paperclip-validation


【解决方案1】:

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

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

在这种情况下,我所做的是将已保存的文件显示为用户可以单击下载的链接。然后,您可以提供要删除的少量 AJAX 链接(通过 AJAX 调用删除文件并将链接替换为新的文件输入)和替换(将链接替换为文件输入)。

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

【讨论】:

    猜你喜欢
    • 2014-12-02
    • 1970-01-01
    • 2012-11-17
    • 2014-04-14
    • 2021-01-13
    • 2012-07-30
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多