如何使用link_to Ruby在rails上添加确认消息

时间:2013-05-21 11:31:15

标签: ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2 link-to

我想在Ruby上添加link_to函数的确认消息。

= link_to 'Reset message', :action=>'reset' ,:confirm=>'Are you sure?'

任何想法为什么它不起作用?

10 个答案:

答案 0 :(得分:129)

我可能会弄错,但您没有指定控制器和:action选项。你试过以下吗?假设您的路线中配置了messages资源:

link_to 'Reset', message_path(@message), :confirm => 'Are you sure?'

编辑:以上不推荐使用。 Rails 4.0现在接受提示作为数据属性。请参阅文档here(感谢@Ricky)。

link_to 'Reset', message_path(@message), :data => {:confirm => 'Are you sure?'}

答案 1 :(得分:42)

首先,您应该验证您的布局是否有 jquery_ujs 。 最佳做法是将其包含在主 application.js

//= require jquery_ujs

检查您的布局中是否包含 application.js

= javascript_include_tag :application

在开发模式下,查看源html并验证 jquery_ujs.js 是否存在。

运行您的服务器并验证您的链接代码是否具有数据确认值,例如:

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

如果所有这些步骤都正确,一切都应该有效!

注意:检查此RailsCast http://railscasts.com/episodes/136-jquery-ajax-revised

答案 2 :(得分:10)

不记得在Rails 3中是如何完成的,但在Rails 4中你可以简单地说:

<%= link_to 'Reset message', { controller: 'your_controller', action: 'reset' }, data: {confirm: 'Are you sure?'} %>

答案 3 :(得分:3)

试试这个:

= link_to 'Reset message', {:action=>'reset'}, :confirm=>'Are you sure?'

或者更清楚

= link_to('Reset message', {:action=>'reset'}, {:confirm=>'Are you sure?'})

参考http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

当您将网址作为{:action => ..., :controller => ...}

等选项提供时,您会看到有3个参数
link_to(body, url_options = {}, html_options = {})

在ruby中,如果函数调用中的最后一个参数是散列,则无需将其包装在{}个字符中(换句话说,如果散列是最后一个参数,则可以省略它) ,因此您提供的代码将被解释为仅包含2个参数的函数调用,'Reset message'字符串和{:action=>'reset', :confirm=>'Are you sure?'}哈希,而:confirm=>'Are you sure?'将被解释为url_option一个html_option

答案 4 :(得分:2)

<%= link_to "Delete this article", article_path(article), method: :delete,
                    data: { confirm: "Are you sure you want to delete the 
                    article?"}, class: "btn btn-xs btn-danger" %>

按钮链接,其中article_path是前缀,(article)传递id方法所需的method: :delete。 代码的后面部分添加了一个确认消息。

答案 5 :(得分:0)

查看你的javascript_include_tag,它应该可以正常工作:

<%= link_to("Reset message", :method => :reset, :class => 'action', :confirm => 'Are you sure?') %>

答案 6 :(得分:0)

答案 7 :(得分:0)

首先,我们需要了解Js包对rails应用程序中此类警报的响应。因此,jquery_ujs包是负责显示rails中的警报。

所以你必须拥有jquery&amp; app.js文件中的jquery_ujs。

//= require jquery
//= require jquery_ujs

现在,我们需要确认,application.js文件是否包含在您所需的布局中。默认情况下,布局文件保留在视图的布局文件夹中的application.html.erb中。

<%= javascript_include_tag 'application' %>

接下来链接应该有数据确认&amp;数据方法属性为

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

在erb中,这可以写成,

= link_to 'Reset', message_path(@message), data: {method: 'delete', confirm: 'Are you sure?'}

如果所有内容都以相同的方式对齐,这应该有用。

答案 8 :(得分:0)

仅在Safari浏览器中无法正常运行那些代码,所以我参与了按钮...

<%= button_to('', delete_path(), method: "delete", data: { confirm: 'Are you sure?', disable_with: 'loading...' }) %>

答案 9 :(得分:0)

<%= link_to 'Reset Message', data: {confirm:"Are you sure?"} %>

记住要在“重置消息”和数据之间添加路径