如何在rails上添加link_to Ruby的确认消息
我想在link_to函数上添加确认消息。
= link_to 'Reset message', :action=>'reset' ,:confirm=>'Are you sure?'
任何想法,为什么它不工作?
首先,你应该validation你的布局是否有jquery_ujs 。 通过将其包含在主application.js中的最佳做法:
//= require jquery_ujs
检查你的布局中是否包含了application.js :
= javascript_include_tag :application
而在开发模式下,查看您的源HTML,并validationjquery_ujs.js存在。
运行您的服务器并validation您的链接标记具有数据确认值,例如:
<a href="/articles/1" data-confirm="Are you sure?" data-method="delete">
如果所有这些步骤是正确的,一切都应该工作!
注意:检查这个RailsCast http://railscasts.com/episodes/136-jquery-ajax-revised
我可能会误解,但是你不要指定一个控制器和:action
选项。 你有没有尝试过以下? 假设您在路由中configuration了messages
资源:
link_to 'Reset', message_path(@message), :confirm => 'Are you sure?'
编辑 :以上是弃用。 Rails 4.0现在接受提示作为数据属性。 在这里看到文档(谢谢@Ricky)。
link_to 'Reset', message_path(@message), :data => {:confirm => 'Are you sure?'}
不记得这是如何在Rails 3中完成的,但是在Rails 4中,您可以简单地:
<%= link_to 'Reset message', { controller: 'your_controller', action: 'reset' }, data: {confirm: 'Are you sure?'} %>
尝试这个:
= 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
你会看到,有3个参数,当你给像url {:action => ..., :controller => ...}
link_to(body, url_options = {}, html_options = {})
在ruby中,如果函数调用中的最后一个参数是散列,那么不需要用{}
字符来包装它(换句话说,如果散列是最后一个参数,那么可以省略),所以你的代码提供将被解释为一个函数调用只有2个参数, 'Reset message'
string和{:action=>'reset', :confirm=>'Are you sure?'}
哈希和:confirm=>'Are you sure?'
将被解释为url_option
而不是html_option
看看你的javascript_include_tag,它应该工作正常:
<%= link_to("Reset message", :method => :reset, :class => 'action', :confirm => 'Are you sure?') %>
观看这个railscastsvideo,以便更好地理解。
http://railscasts.com/episodes/205-unobtrusive-javascript
rails_to_helper的rails文档。
http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to