【问题标题】:the link_to with confirm works only after reloading the page带有确认的 link_to 仅在重新加载页面后才有效
【发布时间】:2016-05-12 15:45:02
【问题描述】:
 **<%= link_to "Delete",(@article) ,method:"delete",data: { confirm: 'Are you sure you want to delete ?' } %>**

我有一个 Rails 应用程序,它允许用户创建帐户并发布删除和更新添加 cmets 并使用 rails 和 Jquery 获取通知

当我单击包含确认消息的按钮时,在我刷新页面之前不起作用!!!为什么?我该做什么 ??

<%= link_to "Delete",(@article) ,method:"delete",data: { confirm: 'Are you sure you want to delete ?' } %>

【问题讨论】:

  • 向我们展示您的 application.js |您是否动态添加任何内容? |你在使用 Turbolinks 吗?
  • '//= 需要 jquery //= 需要 jquery_ujs //= 需要 turbolinks //= require_tree 。 //= 需要 jquery.turbolinks $(document).on('page:change', function(){ $(document).ready(function(){ $("#not-commented").mouseover(function () { $(this).attr("src", "/assets/balloon2.svg"); }) $("#not-commented").mouseout(function () { $(this).attr("src" , "/assets/balloon.svg" ); }); $(".cmets-count").click(function(){ $(".view-cmets").toggle(); }); }); $(".view-cmets").hide(); })'
  • 请回答我的其他问题。您可能不想将$(document).ready 嵌套在$(document.on('page:change' 中,但这不应该对link_to 产生影响。
  • turbolinks :是的,但没有动态添加内容 - 没有将 .ready 嵌套在 .on('page:change') 内,每次我必须刷新页面时,我都会遇到同样的问题 {confirm}为了与我的切换菜单进行交互!

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


【解决方案1】:

我的第一个猜测是您的 jquery 干扰了链接。确保您的 js 文件中没有针对该链接的“prevent_default”子句,否则会阻止单击链接时执行正常的 javascript。确保你的 application.js 文件仍然有:

//= require jquery
//= require jquery_ujs

最后,确保您的 layouts/application.html.erb 文件中还有:

 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

完成后,重新加载页面并检查您的开发者控制台,确保链接标签中有 data-confirm 属性,例如:

<a href="/articles/1" data-confirm="Are you sure?" data-method="delete">

【讨论】:

  • 是的,我有 //= 需要 jquery //= 在我的 aplication.js 中需要 jquery_ujs 并且我有 ' true %> ' 在我的布局 application.html
  • 检查当您从应用中删除 turbolink 时它是否有效。这几乎总是问题所在,并且会阻止 js 代码执行,因为新页面没有被加载而只是被更改!
  • 当我从应用程序中删除 ' true %>' 时,不会出现任何警报,它会直接保存更新!!
  • 您需要保留包含应用程序部分,并且只删除该 javascript_include_tag 中的“data-turbolinks”部分,否则不会从您的 application.js 文件中运行任何 js!尝试仅删除 data-turbolinks'部分,看看它是否按预期工作。如果是这样,这是在您的页面上调用 ready 并被 turbolinks 忽略的问题
猜你喜欢
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 2012-10-06
相关资源
最近更新 更多