link_to方法未被禁用: -
<%= link_to edit_cabinet_path(object), remote: true, disabled: true do %>
<span class="glyphicon glyphicon-pencil"></span>
<% end %>
但如果我喜欢下面隐藏链接
<%= link_to edit_cabinet_path(object), remote: true, style: "display:none;" do %>
<span class="glyphicon glyphicon-pencil"></span>
<% end %>
现在的问题是如何使用块禁用这种类型的链接,以及第二个代码工作的原因是什么,首先不是。
答案 0 :(得分:8)
可能您正在寻找link_to_if
。 link_to_if
仅在条件通过时才会使您的链接可以点击。
您的代码应该是:
<%= link_to_if false, edit_cabinet_path(object), remote: true do %>
<span class="glyphicon glyphicon-pencil"></span>
<% end %>
要使其动态化,您可以调用满足是否激活该链接的条件,例如:
<%= link_to_if cabinate.active?,
"<span class='glyphicon glyphicon-pencil'></span>".html_safe,
edit_cabinet_path(object), remote: true %>
希望这能回答你的问题..
答案 1 :(得分:1)
实际上disabled
没有link_to
属性,仅适用于button_to
代码。
有关详细信息,请参阅此处:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
在这种情况下,您可能希望使用link_to_if
,请查看以下内容:http://apidock.com/rails/v4.2.1/ActionView/Helpers/UrlHelper/link_to_if
答案 2 :(得分:1)
我写了一些简单的 JS 来让你将 disabled: true
添加到 link_to
方法
//this allows us to use html disabled attribute in rails
//to prevent clicking on a disabled link from doing anything
$('a[disabled]').click(function(e){
e.stopImmediatePropagation()
e.preventDefault();
});
答案 3 :(得分:0)
link_to_if无法正常工作。仅当您的条件为false时才呈现给定的块作为后备。
https://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to_if#1589-Passing-a-block-does-not-behave-as-expected
就我而言,我为给定的区块制作了一个程序
seenListener = sender.addValueEventListener(object : ValueEventListener{
override fun onDataChange(dataSnapShot: DataSnapshot) {
for(snapShot in dataSnapShot.children){
var chat = snapShot.getValue(Chat::class.java)
if(!chat?.isYourSend!!) {
if (chat?.receiver.equals(userId) && chat?.sender.equals(firebaseUser.uid)) {
var hashMap: HashMap<String, Object> = HashMap()
hashMap.put("seen", true as Object)
snapShot.ref.updateChildren(hashMap as Map<String, Any>)
receiver.child(snapShot.key!!).updateChildren(hashMap as Map<String, Any>)
}
}
}
}
override fun onCancelled(p0: DatabaseError) {
}
})