ruby-on-rails - 编辑表单时如何显示 Active Storage 附件?
问题描述
我正在构建一个协议管理应用程序。每个协议都有供应商、激活、到期日期和文件。文件是 pdf 格式的附加协议。我使用 Active Storage 附加文件。当我编辑表格时,我看不到附件。因此,如果我更改任何其他参数,比如说供应商并更新协议,则先前附加的文件将被删除。
如果我在编辑时不上传任何其他文件,我应该怎么做才能使附加的文件名在更新时出现并且不会被删除?
更新:
这是代码。除了将 :file 添加到允许的参数之外,我没有对生成的协议控制器进行任何调整。
agreement.rb
class Agreement < ApplicationRecord
belongs_to :vendor
has_one_attached :file
end
agreements_controller.rb
class AgreementsController < ApplicationController
def agreement_params
params.require(:agreement).permit(:vendor_id, :activation_date, :expiration_date, :file)
end
end
_form.html.erb
<%= form_with(model: agreement, local: true) do |form| %>
…
<div class="field">
<%= form.label :file %>
<%= form.file_field :file %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
解决方案
添加协议模型
attribute :remove_file, :boolean, default: false
after_save :purge_file, if: :remove_file
推荐阅读
- ionic-framework - window.Ionic.WebView.convertFileSrc 在离子 3 中不起作用
- azure - 使用重复触发器以编程方式触发逻辑应用
- r - r中层次聚类解决方案的敏感性
- aws-lambda - 是否可以在 Amazon Alexa 技能上动态更新卡片?
- python - 将第二组刻度正确添加到 python matplotlib colorbar
- .net - 如何结合 CI 包(自动包版本控制)和项目引用?
- powershell - 为什么PowerShell在运行exe时会打开一个新窗口
- assembly - 在 MIPS 中读取和打印数组
- matlab - 如何在使用 matlab 生成的混淆矩阵中添加垂直线?
- react-native - 反应导航导航器层次结构