我正在生成一条包含确认消息的链接,但我对如何收录确认消息有疑问。
我已经使用rails 4.0.10
和rails 4.2.2
尝试了此操作,它会产生相同的输出。
这是我的link_to
代码:
<%= link_to 'Destroy Comment', :url => [comment.article, comment], :method => :delete, :remote => true, :confirm => "are you sure?" -%>
它会生成以下链接:
<a data-remote="true" href="/articles/4?confirm=are+you+sure%3F&method=delete&url%5B%5D=4&url%5B%5D=5">Destroy Comment</a>
这显然不起作用,因为它正在将javascript确认消息放入链接的URL中。
我发现如果我从:url =>
删除link_to
,它似乎工作正常。
<%= link_to 'Destroy Comment', [comment.article, comment], :method => :delete, :remote => true, :confirm => "are you sure?" -%>
<a confirm="are you sure?" data-remote="true" rel="nofollow" data-method="delete" href="/articles/4/comments/5">Destroy Comment</a>
有没有办法解决这个问题,保持 :url =>
中的link_to
?我非常希望在那里有:url =>
用于特殊目的。我查看了api文档,但找不到具体的答案。有一条评论认为这样的说法应该有效。 http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to#1227-link-to-with-as-routing
答案 0 :(得分:0)
在第一个示例中,您将传递散列作为第二个参数,该参数与此方法签名匹配:
link_to(body, url_options = {}, html_options = {})
导致Rails将其解释为url_options
,这就是您获得该链接的原因。
如果您真的想要使用:url=>
,那么您可以创建自己的帮助方法,比如说link_to_with_url
,希望包含:url
键的哈希作为第二个参数:
def link_to_with_url(body, options={})
url = options.delete(:url);
if url.nil?
raise "Can't link to something that doesn't have a URL"
else
link_to body, url, options
end
end
你也可以重载Rails'link_to
方法,但我会反对。
答案 1 :(得分:0)
试试这个:
<%= link_to 'Destroy Comment', :url => [comment.article, comment], :method => :delete, :remote => true, :data => {:confirm => "are you sure?"} %>