gpt4 book ai didi

ruby-on-rails-3 - Rails 3 - 如何替换回形针中的现有附件

转载 作者:行者123 更新时间:2023-12-04 07:04:53 26 4
gpt4 key购买 nike

我有一个发票模型。创建发票时,需要附件。这行得通。

如何在更新期间更换附件?我希望删除原始附件。当我在编辑屏幕上有相同的表单字段时,它不会在提交时更新。旧文件还在。此外,它显示“没有选择文件”,即使有一个。我可以单击查看附件,它显示得很好。

发票.rb

has_attached_file :attachment,
:url => "http://...../attachments/:id/:style/:basename.:extension",
:path => ":rails_root/public/attachments/:id/:style/:basename.:extension"
validates_attachment_presence :attachment
validates_attachment_size :attachment, :less_than => 5.megabytes

_form.html.erb
<label>Invoice Attachment: </label>
<%= f.file_field :attachment %>

<%= link_to 'View Attachment', @invoice.attachment.url %>

最佳答案

您只需调用update_attributes或等效的,回形针将自动删除旧附件。例如,假设你有这个表格(来自 paperclip docs):

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

在您的 Controller 中,您可能具有以下内容:
def update
@user = User.find(params[:id])
@user = User.update_attr(params)
end

或者,如果您只想更新附件,您可以这样做:
def update
@user = User.find(params[:id])
avatar_data = params.slice('avatar')
@user = User.update_attr(avatar_data)
end

无论哪种情况,旧附件都将从存储中删除,新文件将取而代之。

关于ruby-on-rails-3 - Rails 3 - 如何替换回形针中的现有附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13458859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com