Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails删除ActiveRecord不工作的控制器_Ruby On Rails_Ruby_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails rails删除ActiveRecord不工作的控制器

Ruby on rails rails删除ActiveRecord不工作的控制器,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我正在使用Rails,并且有一个用于账单的控制器,其中有一个销毁方法。在浏览器中,当我使用删除url时,例如localhost/delete/2(在本例中,2是相关账单的ID),账单永远不会被删除。任何关于我可能做错了什么的想法(或者我是否应该在这里进行额外配置)。这些路线被复制到下面 票据管理员 def destroy @bill = Bill.find(params[:id]) @bill.destroy respond_to do |format|

我正在使用Rails,并且有一个用于账单的控制器,其中有一个销毁方法。在浏览器中,当我使用删除url时,例如localhost/delete/2(在本例中,2是相关账单的ID),账单永远不会被删除。任何关于我可能做错了什么的想法(或者我是否应该在这里进行额外配置)。这些路线被复制到下面

票据管理员

  def destroy
    @bill = Bill.find(params[:id])
    @bill.destroy
    respond_to do |format|
      format.html { redirect_to posts_url, notice: 'Bill was successfully destroyed.' }
      format.json { head :no_content }
    end
  end
路线

Rails.application.routes.draw do
  resources :bills
  get 'bills/index'
end
 def index
    @bills = Bill.all
  end

  # DELETE /bills/1
  # DELETE /bills/1.json
  def destroy
    @bill = Bill.find(params[:id])
    @bill.destroy
    respond_to do |format|
      format.html { redirect_to bills_url, notice: 'Bill was successfully destroyed.' }
      format.json { head :no_content }
    end
  end
我是否应该在routes.rb文件中为删除操作添加特定路由? 我的HTML页面上有以下内容:

  <td><a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="/bills/1">Destroy</a></td>
索引erb文件

<p id="notice"><%= notice %></p>

<h1>Listing Bills</h1>

<table>
  <thead>
    <tr>
      <th>Title</th>
      <th>Body</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @bills.each do |bill| %>
      <tr>
        <td><%= bill.title %></td>
        <td><%= bill.body %></td>
        <td><%= link_to 'Show', bill %></td>
        <td><%= link_to 'Edit', edit_bill_path(bill) %></td>
        <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<%= link_to 'New Post', new_post_path %>

上市票据 标题 身体

您的浏览器将使用GET的HTTP操作。您需要将其删除。您可以为您的浏览器安装一个插件,让您进行rest调用,并设置操作,但我认为使用户更容易:

curl-X删除本地主机/bills/2


您可能需要调整URL中的主机名,但您知道了。

问题是我的rails应用程序供应商javascript目录为空,并且没有拉入启用删除调用所需的javascript文件。

路由到
destroy
需要通过HTTP
delete
方法发出请求。仅在浏览器中访问此路由将创建一个
GET
请求,并可能引发无路由匹配错误。大多数浏览器不支持true
DELETE
请求,因此rails通过添加
\u方法
参数,然后在其内部适当地处理请求,从而为您证伪这一点。作为旁注,您没有发布您的
账单
路线,而是发布
帖子
感谢您指出-我需要做哪些更改以确保调用删除?您有
链接到“销毁”,post
这似乎是一个持续的问题。你确定你发布的是真实的来源吗?我在URL中有一个用于删除的链接()是的,应该可以。但是仅仅用浏览器访问URL是不行的。但是你不会想硬编码href。使用路径帮助器,并传递要删除的对象。如下所示:
@Daiku by the way link\u to可以推断出单个路径
bill\u path
,如果只传递了对象。只是一些有趣的东西