Ruby on Rails-尝试提交表单时,ActiveSupport :: MessageVerifier :: InvalidSignature

时间:2019-03-03 02:11:09

标签: ruby-on-rails ruby

好的,因此在测试应用程序时出现ActiveSupport :: MessageVerifier :: InvalidSignature错误。我也是Ruby On Rails的新手。

在控制台中,这是我可以看到的:

  

ActiveStorage :: Attachment加载(1.2毫秒),从“ active_storage_attachments”中选择“ active_storage_attachments”。在“ active_storage_attachments”中。   “ record_id” =? AND“ active_storage_attachments”。“ record_type” =? AND“ active_storage_attachments”。“名称” =? LIMIT? [[“ record_id”,4],[“ record_type”,“ Project”],[“ name”,“ csi_upload”],[“ LIMIT”,1]]      (0.5ms)回滚事务   在121毫秒内完成500个内部服务器错误(ActiveRecord:4.8毫秒)

无论我尝试更新:project_name,:project_city还是: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

任何帮助或指针都将受到高度赞赏。

0 个答案:

没有答案