在Rails 3中管理restful资源

时间:2010-10-20 17:02:02

标签: ruby-on-rails rest resources ruby-on-rails-3

我正在尝试将我的Rails 2应用程序转换为Rails 3,但我无法使用旧的Rails 2代码删除任何资源。确切地说,我正在尝试使用以下链接删除资源:

<%= link_to image_tag("misc/delete.png"), @book, :confirm => 'Are you sure?', :method => :delete %>

然而它根本不起作用!它的行为就好像根本没有设置:confirm选项和:method选项一样,即将我重定向到@book对象的url,甚至没有显示警告框。

Rails 3中生成的HTML是:

<a href="/books/13" data-method="delete" rel="nofollow"><img alt="Delete" src="/images/misc/delete.png?1205252772"></a>

Rails 2中生成的HTML是:

<a href="/books/11" class="small" onclick="if (confirm('Are you sure?')) { var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', 'uPeQI9FZxJT+DQlWvb02X5FEihG/hJgBk+vUhDwYT8o='); f.appendChild(s);f.submit(); };return false;"><img alt="Delete" src="/images/misc/delete.png?1279402305"></a> 

这是一个明显的区别,但我不知道我应该如何处理这个问题。

我的控制器看起来像这样:

class BooksController < ApplicationController
  before_filter :require_admin, :only => ['new', 'create', 'edit', 'update', 'destroy']

  # ....

  def destroy
    puts "-------------- DESTROYING BOOK --------------"
    @book = Book.find(params[:id])
    @book.destroy

    flash[:notice] = "Successfully destroyed book."
    session[:restore] = request.referer
    redirect_to back(edit_author_url(@book.author))
  end
end

字符串“销毁书”没有显示在控制台上,所以我认为肯定有问题。

在我应该了解的Rails 3中,是否已经改变了一些安静的处理?

谢谢,伙计们!

1 个答案:

答案 0 :(得分:1)

您需要添加rails javascript库。