2

使用 Rails 5.2 rc1,是否可以在开发中直接在 localhost 上进行上传?

这是我的表格new.html.erb

<div class="form-group">
  <%= f.label :images %>
  <%= f.file_field :images, multiple: true, direct_upload: true, class: 'form-control' %>
</div>

这是我在控制台中遇到的错误:

ActiveSupport::MessageVerifier::InvalidSignature (ActiveSupport::MessageVerifier::InvalidSignature):
4

2 回答 2

3

我遇到了相同的错误消息(rails 5.2.1)。

问题是我的浏览器只是将文件名作为字符串提交,而不是上传文件。

发生这种情况是因为我尝试向style="display: none;"文件输入添加一个属性,这在尝试设置上传按钮的样式时很常见。不知道为什么浏览器(chrome)会这样。解决方案是不使用 display:none,而是使用 css opacity=0 设置按钮样式。

不要这样做:

<label class="btn btn-primary btn-file">
    Custom element to upload an image, hurray!
    <%= f.file_field :avatar, accept: "image/*", style: "display: none;" %>
</label>

相反,使用 CSS 隐藏默认浏览器按钮。请参阅此处进行演示。

于 2018-09-04T08:40:40.273 回答
2

对于将来遇到此问题的其他任何人:

我在控制器中错误地使用了它:

def create
  @post = Post.new(post_params)
  @post.images.attach(post_params[:images]) # THIS WAS THE ERROR!!!

  respond_to do |format|
    if @post.save
      format.html { redirect_to @post, notice: 'Post was successfully created.' }
      format.json { render :show, status: :created, location: @post }
    else
      format.html { render :new }
      format.json { render json: @post.errors, status: :unprocessable_entity }
    end
  end
end

创建新帖子附加已附加的图像会导致各种错误,例如损坏的 PG 密钥和无效签名。

确保attach在新创建的模型实例上上传文件时省略。

于 2018-03-08T08:12:04.893 回答