Хорошо, поэтому я получаю ошибку ActiveSupport :: MessageVerifier :: InvalidSignature при тестировании своего приложения.Я также новичок в Ruby On Rails.
В консоли это то, что я вижу:
ActiveStorage :: Attachment Load (1.2ms) SELECT "active_storage_attachments". * FROM" active_storage_attachments "ГДЕ" active_storage_attachments "."record_id" =?И "active_storage_attachments". "Record_type" =?И "active_storage_attachments". "Name" =?LIMIT?[["record_id", 4], ["record_type", "Project"], ["name", "csi_upload"], ["LIMIT", 1]] (0,5 мс) транзакция отката завершена 500 Внутренняя ошибка сервера за 121 мс(ActiveRecord: 4,8 мс)
Ошибка возникает, пытаюсь ли я обновить: имя_проекта, :_проект_город или: csi_upload.
Что я сделал до сих пор
Когда я впервые протестировал встроенную систему загрузки файлов, которая поставляется с Rails 5.2, мне удалось заставить ее работать.Теперь, пару недель спустя, я не могу заставить его работать снова, просто получаю ошибку, указанную выше, хотя у меня тот же код, что и тот, который работал раньше (я, к сожалению, не могу доказать это себе).Я попытался вернуться к минимальному примеру снова, но безуспешно.
Я знаю, что ошибка связана с загрузкой, поскольку я могу без проблем обновить свой проект, если закомментирую строку <% = f.file_field: csi_upload, метка: "CSI upload"%> в _ongoing_form.html.erb
Я очистил таблицы active_storage_attachments и active_storage_blob, так что они обе пусты (данные, которые были там, были закачками, которыми я управлял при первой попытке этого, некоторыенедель назад).
Я читал о методе attach , но я не знаю, должен ли я его использовать или нет, так как мне удалось заставить его работать один раз без него.
Представления - _ongoing_form.html.erb
<%= bootstrap_form_for(@project) do |f| %>
<%= f.text_field :project_name %>
<%= f.file_field :csi_upload, label: "CSI upload" %>
<div class="col-sm-4 col-sm-offset-4">
<%= f.submit "Update project", class: 'form-control login-button'%>
</div>
<% end %>
Представления - edit.html.erb
<div class="container">
<%= render 'layouts/navigation' %>
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
<h2>Edit Project</h2>
<%= link_to 'Back', projects_path %>
<p id="notice"><%= notice %></p>
</div>
<div class="col-sm-6 col-sm-offset-3">
<%= bootstrap_form_for(@project) do |f| %>
<%= f.text_field :project_city %>
<% if @project.status == 'Ongoing' %>
<div id="show">
<%= render(:partial => 'ongoing_form', project: @project) %>
</div>
<% end %>
<% end %>
</div>
</div>
Модель - project.rb
class Project < ApplicationRecord
has_one_attached :csi_upload
enum status: [:Paused, :Ongoing, :Finished]
validates :project_name,
presence: true
validates :status,
presence: true
validates :project_city,
presence: true
end
Контроллер - projects_controller
def update
respond_to do |format|
if @project.update(update_project_params)
format.html { redirect_to @project, notice: 'Project was successfully updated.' }
format.json { render :show, status: :ok, location: @project }
else
format.html { render :edit }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
private
def update_project_params
params.require(:project).permit(
:project_name,
:project_city,
:csi_upload
)
end
Любая помощь или указатели высоко ценится.