Rails破坏方法奇怪的行为

时间:2013-06-13 21:54:32

标签: ruby-on-rails

我有控制器销毁方法

def destroy
    @category = Category.find(params[:id])
    @category.destroy
    redirect_to backend_categories_path
end

并查看两个不同的销毁链接

<%= link_to 'Destroy', backend_category_path(category), method: :delete, data: { confirm: 'Are you sure?' } %>
<%= button_to 'Destroy', backend_category_path(category), :confirm => "are you sure?", :method => :delete %>

问题是:

  1. 第一个链接无效,显示记录未删除
  2. 第二个链接确实有效,但不要问我是否真的要删除 记录。
  3. 安装了jquery gem 什么问题?

    rails版本是3.2.13

2 个答案:

答案 0 :(得分:0)

实际上,您不应该通过GET请求访问任何破坏性操作。除了其他问题之外,您还可能会在抓取您的网站时冒被删除的风险。

那就是说,你对button_to的使用在语法上是正确的。确认消息失败可能是由于Javascript错误造成的。您确定<head>中有以下内容吗?

# app/views/home/index.html.erb
<head>
    <%= javascript_include_tag(:defaults) %>
    <%= csrf_meta_tag %>
</head>

答案 1 :(得分:0)

在您的应用程序布局的开头,您是否添加了&lt;%= javascript_include_tag“应用程序”%&gt; ?像这样:

<!DOCTYPE html>
<html>
<head>
<title>title of page</title>
.....
.....
<%= javascript_include_tag "application" %> 

<%= csrf_meta_tag %>

</head>
....

并确保 app / assets / application.js 文件中包含以下行:

//= require jquery
//= require jquery_ujs 
//= require_tree .

我认为您也可以将<%= button_to Destroy',backend_category_path(category), ....替换为<%= button_to 'Destroy', category, ....