【问题标题】:link_to confirm, no matter the answer will always execute the actionlink_to 确认,无论回答什么都会执行动作
【发布时间】:2011-11-06 15:24:13
【问题描述】:

当我点击链接时,会弹出确认,但无论我回答是还是否,它都会执行该操作并删除记录。

查看:

link_to "Remove", gamep, :method => :delete, :confirm => "Remove "+@player.name+" from "+gamep.game.title+"?"

行动:

def destroy
  @gameplayer = GamePlayer.find(params[:id])
  @gameplayer.destroy
  respond_to do   |format|
    format.html { redirect_to @gameplayer.player }
  end
end

是的,我有

javascript_include_tag :defaults

编辑: 我不得不使用 jquery.rails.js 来解决这个问题,因为 :delete 方法不起作用。没有这个,就没有确认,link_to 就像一个普通的链接。

由于某种原因,当我安装“jquery-rails”gem 时,它没有在我的“public/javascripts”文件夹中放置“jquery-ujs.js”。

C:/Ruby192/lib/ruby/gems/1.9.1/gems/jquery-rails-1.0.16

C:/Ruby192/lib/ruby/gems/1.9.1/gems/rails-3.1.1

应用程序.js

// 在此处放置应用程序特定的 JavaScript 函数和类

// javascript_include_tag 自动包含这个文件:defaults

//= 需要 jquery

//= 需要 jquery_ujs

//= 要求树。

【问题讨论】:

  • 我认为您遗漏了一些重要信息。 Rails 已升级到 3.1,不再需要将您的 javascript 保存在公用文件夹中。从现在开始,默认设置是将所有资产保存在 app/assets 中。我能给你的最好建议是生成一个全新的 rails 3.1 应用程序,然后慢慢地将你的代码移到它上面。在我看来,您好像在尝试手动升级旧应用程序。
  • 我制作了一个新应用程序,安装了所有必需的 gem,将所有文件放在正确的文件夹中,并且除了默认的 rails3 之外不再使用任何自定义 js。我还是同样的问题,出现确认,yes or no,依然执行动作。

标签: ruby-on-rails ruby-on-rails-3.1 link-to confirm


【解决方案1】:

在 Rails 3.1 中,您应该使用“应用程序”,而不是“默认值”,否则您的任何 javascript 都不会正确加载:

javascript_include_tag "application"

此外,您不需要手动包含任何额外的 javascript 文件,因为应用程序清单 (app/assets/javascripts/application.js) 已经将它们全部拉入。只需确保您的*全部* JS 文件位于 app/assets/javascripts,而不是 'public/javascripts`。

并确保您使用 Rails 早期版本中的 rails.js 文件。这已被 Rails 3.1 中的 jquery-rails gem 取代。

【讨论】:

  • 我使用的版本是3.1.1。我按照您的要求更新了 rails.js,但问题仍然存在。
  • 啊……这就是问题所在,您使用的是 3.1.1。请参阅我的更新答案。
  • 如果您刚刚下载了rails.js 文件并添加了它,请立即删除它。
  • 我忘了提一些非常重要的事情。我正在编辑问题。
  • 如果我使用 "application" 而不是 :defaults,我的 js 都不会被加载。
猜你喜欢
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多