ruby-on-rails - 轨道控制器中空附件的 ActiveSupport::MessageVerifier::InvalidSignature
问题描述
我刚刚安装ActiveStorage
在我的 Rails 5.2.3 应用程序中。我正在使用经典的 CRUD 操作上传附件,当通过我的表单选择图像时,该附件可以正常工作:
X-HTTP-Accept"=>"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, / ; q=0.01", "id"=>"1348"}
图像参数设置正确。我的控制器按照ActiveStorage Docs中的描述处理图像:
@my_object.logo.attach(my_params[:logo])
但是,当我更新表单中的不同属性时,例如firstname
并发送一个空徽标参数,我收到一个错误:
Sponsors::MyController#update as JS 参数处理:{"utf8"=>"✓", "authenticity_token"=>"6hKH0vJIHgd6L2nFBSkpkqSLGXIvnuz95Wmq6I/jbT5NEBngxLY7yNUwF5d+jtN3ZyPFG8rJ/MJ2kXVrWf4SeQ==", "sponsor"=>" "John", "lastname"=>"Doe", "name"=>"Something", "logo"=>"" ...
=>
ActiveSupport::MessageVerifier::InvalidSignature (ActiveSupport::MessageVerifier::InvalidSignature)
这是不令人满意的。甚至paperclip
知道如何处理那些空参数。我也不明白为什么会发生这种情况。
一个可能的解决方案是如果参数为空,则过滤掉参数,但这会破坏我的代码:
if my_params[:logo].present?
@my_object.logo.attach(my_params[:logo])
else
my_params.delete :logo
end
作品。
有没有更好的解决方案?为什么ActiveStorage
不直接跳过一个空的附件参数呢?
解决方案
推荐阅读
- javascript - react/redux 应用程序中的 js 承诺中未捕获的错误
- python - 什么 setup.py 命令将更新站点包中的源?
- reactjs - 如何在 TextEditor 中获取当前输入文本并在 Draftjs 中自动完成,如提及或主题标签
- python - 结合 Astropy FITS 文件?
- regex - 在 Regex Ruby 中捕获 >= 10 的第一个十进制数
- excel - VBA 用于条件格式以格式化具有不同值的多行?
- json - 将 json 字符串转换为对象列表的通用方法
- c# - 当 UnitTest 调用该方法时,Moq 设置返回空对象
- azure - 在 Azure Powershell Runbook 中使用“invoke-webrequest”时清空“Parsed-HTML”字段
- three.js - Stereoeffect.js 不工作。它显示黑屏