У меня проблема с загрузкой изображений / PDF с ActiveStorage.Изображения, кажется, загружаются без проблем, но они вызывают ошибки, когда я пытаюсь их показать.
Моя blog
модель has_one_attached
:image
и has_one_attached
:pdf
.Загрузки раньше работали (так что я знаю, что у меня установлен ActiveStorage и мой amazon s3 настроен правильно), но что-то пошло не так.нет (не во всех блогах будет pdf ... во всех должно быть изображение).
Мой blog#create
метод:
def create
@blog = Blog.new(blog_params)
@blog.user_id = current_user.id
if @blog.published
@blog.published_on = DateTime.current
end
respond_to do |format|
if @blog.save
if @blog.image.attached?
@blog.image.purge
end
@blog.image.attach(params[:image])
if @blog.pdf.attached?
@blog.pdf.purge
end
@blog.pdf.attach(params[:pdf])
format.html { redirect_to @blog, notice: 'Blog was successfully created.' }
format.json { render :show, status: :created, location: @blog }
else
format.html { render :new }
format.json { render json: @blog.errors, status: :unprocessable_entity }
end
end
end
Мой blog#update
метод:
def update
if @blog.published
@blog.published_on = DateTime.current
end
if @blog.image.attached?
@blog.image.purge
end
@blog.image.attach(params[:image])
if @blog.pdf.attached?
@blog.pdf.purge
end
@blog.pdf.attach(params[:pdf])
respond_to do |format|
if @blog.update(blog_params)
format.html { redirect_to @blog, notice: 'Blog was successfully updated.' }
format.json { render :show, status: :ok, location: @blog }
else
format.html { render :edit }
format.json { render json: @blog.errors, status: :unprocessable_entity }
end
end
end
Моя форма проста:
<%= simple_form_for(@blog) do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
...
<div class="form-group">
<%= f.label "Blog Image" %><br />
<%= f.file_field :image %>
</div>
<div class="form-group">
<%= f.label "Linked PDF" %><br />
<%= f.file_field :pdf %>
</div>
...
<div class="form-actions text-center">
<%= f.button :submit, class: "btn-outline-primary" %>
</div>
<% end %>
Я пытаюсь показать изображение в блоге так:
<div class="frame" style="background-image: url(<%= rails_blob_url(@blog.image) %>)"></div>
А в PDF вот так:
<h2 class="cta text-center"><%= link_to @blog.cta, rails_blob_url(@blog.pdf), target: "_blank" %></h2>
Я получаю ошибку signed_id delegated to attachment, but attachment is nil
в том месте, где изображение называется фоновым изображением на странице blog#show
.Я получаю ту же ошибку на localhost
и Heroku, если это помогает.
Наконец, я увидел эту ошибку на этот вопрос и попытался сбросить и заново создать базу данных, но безрезультатно.
Кто-нибудь может увидеть, что здесь происходит не так?