Rails:禁用 link_to 链接不起作用,但隐藏 link_to 起作用

问题描述 投票:0回答:5

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 %>  

现在的问题是如何禁用这种类型的块链接,以及第二个代码有效而第一个代码无效的原因是什么。

ruby-on-rails-4.1 ruby-2.1
5个回答
25
投票

您可能正在寻找

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 %>

希望这能回答你的问题..


3
投票

实际上

disabled
没有可用的属性,仅适用于
link_to
标签。

有关更多信息,请参阅此处:

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

在这种情况下,您可能想使用

button_to

,请查看以下内容:

http://apidock.com/rails/v4.2.1/ActionView/Helpers/UrlHelper/link_to_if


2
投票
link_to_if

disabled: true
方法
link_to



0
投票

https://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to_if#1589-Passing-a-block-does-not-behave-as-expected
就我而言,我为给定的块创建了一个 Proc

//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(); });



0
投票

<%link_block = Proc.new{%> <span class="glyphicon glyphicon-pencil"></span> <%}%> <%if condition?%> <%= link_to edit_cabinet_path(object), remote: true, disabled: true, &link_block%> <%else%> <%link_block.call%> <%end%>

	
© www.soinside.com 2019 - 2024. All rights reserved.