当前位置: 首页 > 知识库问答 >
问题:

删除功能适用于本地主机,但不适用于 heroku

公孙芷阳
2023-03-14

我在一个网站上工作,遇到了一个问题,点击我的“删除”链接会出现一个错误页面。在localhost上运行良好-无法理解为什么在Heroku站点上会有所不同。

有人知道这是怎么回事吗?

我的“图片”控制器:

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 %>
 <h1>Edit existing pictures </h1>

 <% @pictures.each do |picture| %>
    <%= image_tag picture.attachment_url(:thumb) %>
    <%= link_to "Delete", picture_path(picture), method: :delete if user_signed_in? %>
 <% end %>

以下是我尝试删除图片时的heroku日志(从导航到新图片页面开始(同一视图中的新建和编辑功能):

2015-11-15T16:13:49.189857 00:00 heroku[路由器]: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连接=1ms服务=46ms状态=200字节=9770

2015-11-15T16:13:49.396294 00:00 heroku[路由器]: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连接=1ms服务=6ms状态=404字节=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[路由器]: at=info方法=GET路径="/图片/40"主机=designstatements.herokuapp.comrequest_id=5dbb3c14-Fab5-4525-a682-2d037b78dd4a fwd="73.238.59.224"dyno=web.1连接=1ms服务=10ms状态=500字节=1754

共有1个答案

秦宏盛
2023-03-14

如您所见,找不到您的资产(您的html" target="_blank">日志指出 /pictures/js/bootstrap.min 的 404 错误.js。

Rails使用javascript库jquery-ujs来模拟DELETE请求,因为浏览器只能执行GETPOSTjquery-ujs 将已设置方法的普通链接::d elete 转换为参数_method设置为删除POST 请求。这告诉 Rails 将此请求视为 DELETE 请求。

现在,如果您的资产无法加载,那么jquery ujs也不会加载。由于jquery ujs丢失,您的链接无法修改,浏览器将发送GET请求,而不是假的删除请求。

要修复此问题,请尝试设置

 config.assets.compile = false

在您的< code > config/environments/production . Rb 中。这让Heroku为你的资产服务。也许你还必须改变其他设置(尤其是你的资产路径)。但是一旦您的JS和CSS文件被加载,< code>DELETE链接就应该工作了。

 类似资料:
  • 问题内容: 我使用Connect编写了一个小型的node.js应用程序,该应用程序提供了一个网页,然后将其定期发送。它还接受用户观察并将其记录到磁盘文件中。 只要我在本地主机上,它就可以正常工作,但是我无法在同一Intranet上让其他计算机看到它。我正在使用端口3000,但是更改为端口8080或80并没有帮助。 这是我用来建立连接的代码: 如上所述,我尝试将端口号更改为8080或80,但没有发现

  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 当我在Android手机上调试应用程序时,我绝对没有遇到任何错误,但在AVD上,我一开始就得到了一个NullPointerException()。我的Android设备在22 API的Lollipop(5.1.1)上运行,我的AVD在28 API的Pie(9.0)上运行。我在gradle中将最小SDK设置为21,编译SDK设置为28。 这是错误: E/AndroidRuntime:致命异常:主进程

  • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。

  • 有人能帮我解决这个问题吗?当然,在Linux上运行时,我已经将路径更改为。