Рубин на рельсах - ActiveSupport :: MessageVerifier :: InvalidSignature при попытке отправить форму - PullRequest
0 голосов
/ 03 марта 2019

Хорошо, поэтому я получаю ошибку 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

Любая помощь или указатели высоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...