ruby-on-rails - Rails ActiveStorage 错误 - MessageVerifier-InvalidSignature
问题描述
我正在做一个需要模型ActiveStorage
has_many_attached :photos
情况的项目Location
。
我在下面设置了代码,但是在尝试上传表单时,我收到以下错误:
ActiveSupport::MessageVerifier::InvalidSignature in
LocationsController#attach_photo
这是将文件“添加”到特定父记录(即:Location
记录)的附件集中的方法吗?
Location
模型
class Location < ApplicationRecord
...
has_many_attached :photos
...
end
位置控制器
class LocationsController < ApplicationController
...
def attach_photo
@location = Location.find(params[:id])
@location.photos.attach(params[:photo])
redirect_to location_path(@location)
end
...
end
看法
<%= form_tag attach_photo_location_path(@location) do %>
<%= label_tag :photo %>
<%= file_field_tag :photo %>
<%= submit_tag "Upload" %>
<% end %>
看法
resources :locations do
member do
post :attach_photo
end
end
解决方案
确保添加multipart: true
. form_tag
它生成enctype="multipart/form-data"
.
form_tag
默认情况下不对它负责,必须拥有它(如果附加文件)。
multipart/form-data 没有字符被编码。当您使用具有文件上传控件的表单时,此值是必需的
形式:
<%= form_tag attach_photo_location_path(@location), method: :put, multipart: true do %>
<%= label_tag :photo %>
<%= file_field_tag :photo %>
<%= submit_tag "Upload" %>
<% end %>
还:
更改post
方法put
,我们正在更新而不是创建幂等性
resources :locations do
member do
put :attach_photo
end
end
推荐阅读
- sapui5 - 多输入字段中的建议行宽度增加
- java - 如何在 JSP 中打印会话数据?
- javascript - Regex to extract text from a string
- angular - 轮播中的选定值
- dns - LogStash - 从文件中过滤 DNS 名称服务器
- flutter - 如何将 List 的最后一个元素粘贴到底部但在需要时将其向下推?
- python - python multiproccess - 发送数据库连接
- graph - 如何在 Tableau 中更改多折线图的标记类型?
- python - 第三方库出现相对导入错误如何解决
- python-3.x - Python Pandas 中的累积行数