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

Gui*_*dre 6 ruby-on-rails ruby-on-rails-3

我今天想在Rails中创建一个基本的"destroy"链接,所以我写了这个:

 <%= link_to "destroy me", @company, :method=>:delete
 %>
Run Code Online (Sandbox Code Playgroud)

生成的代码是:

<a href="/companies/1"
data-method="delete"
rel="nofollow">destroy me</a>
Run Code Online (Sandbox Code Playgroud)

在我的路线,通常

resources :companies
Run Code Online (Sandbox Code Playgroud)

我的摧毁行动在我的控制器里.

但无论何时我点击链接,我都会被重定向到该show动作.奇怪的.

事实证明我的布局中没有包含以下行:

<%= javascript_include_tag :defaults %>
Run Code Online (Sandbox Code Playgroud)

包含它后,销毁链接有效!

为什么?为什么我需要包含默认的javascript标记才能使其正常工作?

由于我不想使用原型,我如何只包含我需要的文件?

Jam*_*hen 6

从3.0开始,Rails表单助手生成带有HTML5数据属性的干净HTML标签(在您的示例中为数据方法).为了支持这些数据属性,原型需要rails.js.如果你使用jQuery,则需要jQuery版本(https://github.com/rails/jquery-ujs).

简单地说,rails.js与javascript框架(prototype或jquery)一起做了一些魔术来挂钩标签上的点击和其他事件,其他明智的当你点击一个链接,正常点击发生因为没有javascript,链接是正常的链接.