从rails 2升级到3时,网页无法使用data-confirm和data-method属性

时间:2013-02-12 13:55:48

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

源代码:

<td class="delete">
<%= link_to 'Destroy', 
  expense, 
  :confirm => 'Are you sure?', 
  :method => :delete, 
  :class => "btnDelete" %></td>

Rails 2生成:

<td class="delete">
<a href="/expenses/18051" class="btnDelete" 
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','MTAoIigmzVSh39na4GRcpnOQXe1yMQkOYGnzCvZI0Xk='); 
    f.appendChild(s);
    f.submit(); 
  };
  return false;
">Destroy</a></td>

Rails 3生成:

<td class="delete">
<a href="/expenses/17732" class="btnDelete" data-confirm="Are you sure?"     
data-method="delete" rel="nofollow">Destroy</a>
</td>

该页面的功能与它在rails 2中使用生成js的方式不同,并且应用程序不使用jquery(尚未)。我提到了jquery,因为谷歌搜索数据确认和数据方法属性会得到点击,这意味着他们需要jquery来做任何事情。

是否有一些参考文档可以处理数据确认和数据方法属性的任何要求以及/或者rails 3期望哪些条件能够使链接到帮助程序生成的代码按预期工作?

2 个答案:

答案 0 :(得分:0)

我已经创建了一个新的rails 3.0应用程序已经有一段时间了。看一下我有一个,我认为你需要包含创建应用程序时生成的rails.js文件,它应该为你处理一些事情。

<%= javascript_include_tag "rails" %>

答案 1 :(得分:0)

部分答案:启用资产管道和编码

<%= javascript_include_tag "application" %>
视图中的

导致rails使用jquery库的(轨道)副本为页面提供服务,从而启用链接上的确认消息框。通过这种理解,我希望看到的是1)关于资产管道上link_to帮助器的:confirm参数之间的依赖关系的文档和2)即使资产管道被禁用也允许确认的解决方法。 / p>