Ruby on rails 为什么在rails中创建销毁链接需要默认javascript文件?

Ruby on rails 为什么在rails中创建销毁链接需要默认javascript文件?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,今天我想在Rails中创建一个基本的“销毁”链接,所以我写了以下内容: <%= link_to "destroy me", @company, :method=>:delete %> 我的毁灭行动在我的控制器里 但只要我点击链接,我就会被重定向到show操作。奇怪 结果我的布局中没有包括以下行: <%= javascript_include_tag :defaults %> 包括它之后,销毁链接工作了 为什么??为什么我需要包含默认的javascript

今天我想在Rails中创建一个基本的“销毁”链接,所以我写了以下内容:

 <%= link_to "destroy me", @company, :method=>:delete
 %>
我的毁灭行动在我的控制器里

但只要我点击链接,我就会被重定向到
show
操作。奇怪

结果我的布局中没有包括以下行:

<%= javascript_include_tag :defaults %>

包括它之后,销毁链接工作了

为什么??为什么我需要包含默认的javascript标记才能实现这一点


既然我不想使用prototype,那么如何只包含我需要的文件呢?

这是因为html的局限性以及锚定标记不能使用GET以外的任何方法提交请求

如果查看rails.js(将包含在
:defaults
)中),当您单击具有“数据方法”的链接时,它会生成并提交一个表单,该表单使用正确的http方法提交到锚标记中指定的url

这是一个很好的解决方法,但实际上没有任何其他选项可以让普通的锚标记提交删除请求(或GET之外的任何其他HTTP动词)


如果您不想使用js,请使用表单(可能使用button_to而不是link_to)发出请求。如果您创建自己的帮助器来构建表单,您可以让它使用按钮标记(与rails构建的输入相反),这是一种非常简单的样式,使其看起来像普通链接。

自3.0以来,rails表单帮助器生成带有HTML5数据属性的干净HTML标记(示例中的数据方法)。为了支持这些数据属性,原型需要rails.js。如果使用jQuery,那么jQuery版本(https://github.com/rails/jquery-ujs)这是需要的

简单地说,rails.js与javascript框架(prototype或jquery)一起,在标记上钩住单击和其他事件方面发挥了一些神奇的作用,其他方面,当您单击链接时,会发生正常的单击,因为没有javascript,链接是正常的链接

resources :companies
<%= javascript_include_tag :defaults %>