我有一个resources :products
定义的完全正常的资源。
在我的小马笔记本电脑上,Update在开发中工作正常。生产是在我没有很多控制权的服务器上使用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="✓" />
<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