我想在 link _ to 函数中添加确认消息。
= link_to 'Reset message', :action=>'reset' ,: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
当您将 url 作为 {:action => ..., :controller => ...}之类的选项提供时,您将看到有3个参数
{:action => ..., :controller => ...}
link_to(body, url_options = {}, html_options = {})
在 Ruby 中,如果函数调用中的最后一个参数是散列,那么就不需要用 {}字符包装它(换句话说,如果散列是最后一个参数,那么可以省略它) ,所以你提供的代码将被解释为只有两个参数的函数调用,'Reset message'字符串和 {:action=>'reset', :confirm=>'Are you sure?'}散列,而 :confirm=>'Are you sure?'将被解释为 url_option而不是 html_option
{}
'Reset message'
{:action=>'reset', :confirm=>'Are you sure?'}
:confirm=>'Are you sure?'
url_option
html_option
我可能弄错了,但是您没有指定一个控制器和 :action选项。你试过以下方法吗?假设在路由中配置了 messages资源:
:action
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?'}
看看你的 javascript _ include _ tag,它应该可以正常工作:
<%= link_to("Reset message", :method => :reset, :class => 'action', :confirm => 'Are you sure?') %>
为了更好的理解,请观看这段视频。
Http://railscasts.com/episodes/205-unobtrusive-javascript
Link _ to helper 的 ails 文档。
http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
首先,您应该验证您的布局是否具有 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
我不记得在 Rails 3中是如何做到这一点的,但是在 Rails 4中,你可以简单地:
<%= link_to 'Reset message', { controller: 'your_controller', action: 'reset' }, data: {confirm: 'Are you sure?'} %>
首先,我们需要了解 Rails 应用程序中的 Js 包对这种警报的响应。因此,jquery _ ujs 包负责在 Rails 中显示警报。
因此,在 application.js 文件中必须有 jquery & jquery _ ujs。
//= require jquery //= require jquery_ujs
现在,我们需要确认 application.js 文件是否包含在所需的布局中。默认情况下,布局文件保留在 application.html.erb 中的视图布局文件夹中。
<%= javascript_include_tag 'application' %>
接下来的链接应该有数据确认和数据方法属性作为
<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?'}
如果所有东西都以相同的方式对齐,那么这应该可以工作。
<%= 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)正在传递 method: :delete方法所需的 id。 代码的后半部分添加了一个确认 msg。
article_path
(article)
method: :delete
id
不知何故不工作,这些代码只有 Safari 浏览器,所以我参与按钮..。
<%= button_to('', delete_path(), method: "delete", data: { confirm: 'Are you sure?', disable_with: 'loading...' }) %>
<%= link_to 'Reset Message', data: {confirm:"Are you sure?"} %>
记得在“重置信息”和数据之间添加路径