Ruby on rails rails删除ActiveRecord不工作的控制器
我正在使用Rails,并且有一个用于账单的控制器,其中有一个销毁方法。在浏览器中,当我使用删除url时,例如localhost/delete/2(在本例中,2是相关账单的ID),账单永远不会被删除。任何关于我可能做错了什么的想法(或者我是否应该在这里进行额外配置)。这些路线被复制到下面 票据管理员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|
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
需要通过HTTPdelete
方法发出请求。仅在浏览器中访问此路由将创建一个GET
请求,并可能引发无路由匹配错误。大多数浏览器不支持trueDELETE
请求,因此rails通过添加\u方法
参数,然后在其内部适当地处理请求,从而为您证伪这一点。作为旁注,您没有发布您的账单
路线,而是发布帖子
感谢您指出-我需要做哪些更改以确保调用删除?您有链接到“销毁”,post
这似乎是一个持续的问题。你确定你发布的是真实的来源吗?我在URL中有一个用于删除的链接()是的,应该可以。但是仅仅用浏览器访问URL是不行的。但是你不会想硬编码href。使用路径帮助器,并传递要删除的对象。如下所示:
@Daiku by the way link\u to可以推断出单个路径bill\u path
,如果只传递了对象。只是一些有趣的东西