我正在网站上工作并遇到一个问题,点击我的“删除”链接会显示错误页面。在localhost上正常工作 - 无法弄清楚为什么Heroku网站会有所不同。
有没有人知道这是怎么回事?
我的'图片'控制器:
err
我的照片/新观点:
class PicturesController < ApplicationController
def index
@pictures = Picture.all
end
def new
@pictures = Picture.all
@picture = Picture.new
end
def create
@picture = Picture.new(picture_params)
if @picture.save
redirect_to new_picture_path, notice: "You just uploaded a picture!"
else
render "new"
end
end
def destroy
Picture.find(params[:id]).destroy
redirect_to new_picture_path, notice: "You just deleted a picture!"
end
...
end
<h1>Upload a new picture</h1>
<br>
<div class="well">
<%= form_for @picture, :html => {:multipart => true} do |f| %>
<%= f.file_field :attachment %>
<%= f.submit "Upload", class: "btn btn-default" %>
<% end %>
以下是我尝试删除图片时的heroku日志(从导航到新图片页面开始(同一视图中的新功能和编辑功能):
2015-11-15T16:13:49.189857 + 00:00 heroku [router]:at = info method = GET path =“/ pictures / new”host = designstatements.herokuapp.com request_id = ccb67000-b99f-4579- a664-097247d97414 fwd =“73.238.59.224”dyno = web.1 connect = 1ms service = 46ms status = 200 bytes = 9770
2015-11-15T16:13:49.396294 + 00:00 heroku [router]:at = info method = GET path =“/ pictures / animate.min.css”host = designstatements.herokuapp.com request_id = fb87e1bd- b5cc-4f9f-9934-6c4076beff41 fwd =“73.238.59.224”dyno = web.1 connect = 1ms service = 6ms status = 404 bytes = 1829
2015-11-15T16:13:49.478789 + 00:00 heroku [router]:at = info method = GET path =“/ pictures / js / bootstrap.min.js”host = designstatements.herokuapp.com request_id = 2b36f60f-0e9a-498f-b210-74350c910540 fwd =“73.238.59.224”dyno = web.1 connect = 1ms service = 8ms status = 404 bytes = 1829
2015-11-15T16:13:53.652050 + 00:00 heroku [router]:at = info method = GET path =“/ pictures / 40”host = designstatements.herokuapp.com request_id = 5dbb3c14-fab5-4525- a682-2d037b78dd4a fwd =“73.238.59.224”dyno = web.1 connect = 1ms service = 10ms status = 500 bytes = 1754
答案 0 :(得分:0)
如您所见,无法找到您的资产(您的日志指出/pictures/js/bootstrap.min.js
有404错误。
Rails使用jquery-ujs
(一个Javascript库)来模拟DELETE
请求,因为浏览器只能执行GET
和POST
。 jquery-ujs
会将您已将method: :delete
设置为POST
请求的常规链接转为_method
个参数delete
设置为DELETE
的请求。这告诉Rails将此请求视为jquery-ujs
- 请求。
现在,如果无法加载您的资源,则jquery-ujs
也不会加载。如果缺少DELETE
,则无法修改您的链接,浏览器会发送GET请求而不是假 config.assets.compile = false
次请求。
要解决此问题,请尝试设置
config/environments/production.rb
在DELETE
中。这使Heroku服务于您的资产。也许您还必须更改其他设置(尤其是您的资产路径)。但是只要加载了JS和CSS文件,import numpy as np
from matplotlib import pyplot as plt
import time
import matplotlib.widgets as widgets
import threading #this is new
fig, ax = plt.subplots()
# it is not always column 0 and 1
sctPlot = ax.scatter([-0.3,0,0.3], [0.3,0.3,0.3], c="blue", picker = 2, s=[50]*3)
fig.subplots_adjust(bottom=0.3, left=0.1)
plt.grid(False)
plt.axis([-0.6, 0.6, -0.6, 0.6])
loopBool = True
def closeLooping(event):
global loopBool
loopBool = False
def looping(event):
global loopBool
while (loopBool == True):
print "Still Looping!"
time.sleep(1)
print "Stop!!"
def looping_pre(event): #this is new
thread=threading.Thread(target=looping,args=(event,))
#thread.daemon=True #might or might not be needed
thread.start()
axCloseButton = plt.axes([0.1, 0.15, 0.2, 0.06])
bClose = widgets.Button(axCloseButton, "Close", hovercolor = '0.975')
bClose.on_clicked(closeLooping)
plt.show() #this is new
fig.canvas.mpl_connect('pick_event', looping_pre) #this is changed
链接就可以正常工作。