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

Tin*_*ini 54 ruby link-to ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

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

= link_to 'Reset message', :action=>'reset' ,:confirm=>'Are you sure?'
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*mes 132

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

link_to 'Reset', message_path(@message), :confirm => 'Are you sure?'
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我认为这种风格已被弃用.根据rails docs,这现在是一个数据属性,即`...,data:{confirm:'你确定吗?'}` (8认同)
  • 是啊.原谅我 - 我没有完全沉浸在stackoverflow文化中!有人问起这个问题,被引导到这里,并对为什么`:确认`似乎不起作用感到困惑.''data-confirm'`可以工作,但它并不是当前的"轨道方式".换句话说:对我来说,最好的方法是记住这个? (2认同)
  • @Ricky不,我应该刚刚更新我的答案,所以我很抱歉.我一定有过糟糕的一天或者其他什么.用Rails 4.0 api编辑的答案. (2认同)

dpa*_*luy 44

首先,您应该验证您的布局是否具有jquery_ujs.最好的做法是将它包含在主应用程序中.js:

//= require jquery_ujs
Run Code Online (Sandbox Code Playgroud)

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

= javascript_include_tag :application
Run Code Online (Sandbox Code Playgroud)

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

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

<a href="/articles/1" data-confirm="Are you sure?" data-method="delete">
Run Code Online (Sandbox Code Playgroud)

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

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


Luk*_*yka 11

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

<%= link_to 'Reset message', { controller: 'your_controller', action: 'reset' }, data: {confirm: 'Are you sure?'} %>
Run Code Online (Sandbox Code Playgroud)


小智 10

<%= link_to 'Reset Message', data: {confirm:"Are you sure?"} %>
Run Code Online (Sandbox Code Playgroud)

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