1

我有一个完全正常的资源,由resources :products.

在我的小马笔记本电脑上,更新在开发中运行良好。生产在我没有太多控制权的服务器上,使用 phusion。每当我尝试更新它时,它都会神秘地重定向,给我一个 404。这是日志中的内容:

64d8] Completed 200 OK in 57ms (Views: 9.6ms | ActiveRecord: 2.0ms)
I, [2018-08-03T13:42:22.444552 #2652091]  INFO -- : [dde252e5-5750-4f63-9fd2-b02a882c864c] Started PATCH "/products/578" for > 154.20.31.78 at 2018-08-03 13:42:22 -0700
F, [2018-08-03T13:42:22.445282 #2652091] FATAL -- : [dde252e5-5750-4f63-9fd2-b02a882c864c]
F, [2018-08-03T13:42:22.445332 #2652091] FATAL -- : [dde252e5-5750-4f63-9fd2-b02a882c864c] ActionController::RoutingError (No route matches [PATCH] "/578"):

如您所见,它似乎正在改变我无法访问的地方的路线。

编辑:表格开始:

<%= form_with model: product, local: true do |form| %>

并为 /products/id/edit 正确填充。这会产生 html:

<form enctype="multipart/form-data" action="/products/578" accept-charset="UTF-8" method="post">
  <input name="utf8" type="hidden" value="&#x2713;" />
  <input type="hidden" name="_method" value="patch" />
  <input type="hidden" name="authenticity_token" value="g+oaySVsX4QLZSvII9xbEZo3j0lGChrXSHhMUdUyJ+3eZEUK6iC6QK4sa1SkdBX6f2vvH2HXlN+rR5lzQOmDWA==" />

这是控制器中的相关方法,从记录实验来看,似乎从未被触及。奇怪的是,触发的形式format.js工作得很好。

def update
  verify_admin
  respond_to do |format|
    @product.update(product_params)
    if @product.save
      save_picture if params[:product][:picture_file]
      if params[:commit] == 'Add/Edit'
        format.html { redirect_to products_url(@product) }
      else
        format.js { render inline: 'location.reload()' }
      end
    else
      format.html { render :edit }
    end
  end
end
4

0 回答 0