通过使用form_tag传递其id来删除文档

时间:2013-08-12 06:43:52

标签: ruby ruby-on-rails-4

假设我有书模型,book.rb

class Book
  include Mongoid::Document
  field :book_id, type: String
  field :title, type: String
end

(这里我使用的是mongoid,但我认为对于这个问题,无论什么类型的数据都无关紧要。)

book模型有自己的控制器,视图等。

现在,我想用form_tag创建一个页面(让我知道这是不是一个正确的方法),通过输入book的id并单击enter我将能够从数据库中删除此给定id的记录。

remove.html.erb:

<%= form_tag books_path, :method => 'get' do %>
<p>book_id:
    <%= text_field_tag :book_id, params[:book_id] %>
    <%= submit_tag "Remove", :name => nil, :confirm => "Are you sure?" %>
</p>
<% end %>

我知道如何删除给定文档,但无法弄清楚如何传递表单中输入的值以及将删除文档的逻辑放在何处。

enter image description here

1 个答案:

答案 0 :(得分:3)

首先要做的事情。为什么需要为book_id模型存储Book?为此,Mongoid已经提供了_id字段。

销毁资源的常用方法是通过发出DELETE HTTP请求来命中控制器中的destroy动作。

class BooksController
  def destroy
    Book.find(params[:id]).destroy
    redirect_to :back
  end
end

然后只需使用以下链接:

link_to "Delete", book_path(@book), method: :delete

@book是您的图书实例。