在Rails3 +中禁用link_to标记

时间:2011-08-03 10:50:02

标签: ruby-on-rails

我使用了以下代码:

<%= link_to image_tag("edit.png", :alt => "Edit"), edit_user_path(user) %>

我想禁用此链接和图片,因此我在代码中添加了:disabled=>true,但它没有禁用。为什么不,以及如何禁用它们?

5 个答案:

答案 0 :(得分:10)

我不确定@lamrin想要这个问题,但我想它是这样的:

<%= link_to_if condition?, image_tag("edit.png", :alt => "Edit"), edit_user_path(user) %>

使用上面的代码,图像会有一个链接,如果条件?是真的

在我的情况下,下面的代码工作(一个更复杂的例子):

link_to_unless disabled, (content_tag :div, "", :class => "vote " + vote_class, :title => title), resource_user_path({ :id => resuser.id, :resource_user => {:id => resuser.id, :resource_id => resource_id, :user_id => current_user_id, :vote => vote_value}}), :remote => true, :method => http_method  

此链接也可能有助于这种方法:

http://railskey.wordpress.com/2012/07/19/rails-link_to-link_to_if-and-link_to_unless/

答案 1 :(得分:7)

与按钮不同,超链接无法“禁用”。您可以执行以下操作,假设您的页面中包含jQuery:

<%=link_to image_tag("edit.png", :alt=>"Edit"), edit_user_path(user), :id => "mylink" %>

将以下Javascript添加到您的页面:

$('#mylink').click(function(e){
  e.preventDefault();
});

答案 2 :(得分:1)

在回答你的问题时,Rails中的link_to帮助器没有:disabled选项,它也不是元素的有效属性。我相信人们倾向于在Rails中与此混淆的原因是&#34;:disabled =&gt;真&#34;如果你使用Bootstrap,它确实有效。因此,为了解决这个问题,你可以按照Gupta的方法,或者只是添加Bootstrap(这也会给你一些默认的CSS,所以人们不会因为点击链接而感到沮丧)!

Re:rails中的link_to方法:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

Re:&#34;禁用&#34;元素的属性:Is 'disabled' a valid attribute for an anchor tag

Re:Bootstrap&#34;禁用&#34;带引导程序的类或属性:http://getbootstrap.com/css/#anchor-element-1

答案 3 :(得分:0)

1)一种解决方案是在您不想要链接时呈现image_tag,并在您希望链接被单击启用时使用link_to。您可以使用实例变量来控制要渲染的内容。

2)或按照建议使用Javascript。

如果要动态执行,请使用2.

答案 4 :(得分:-1)

您可以使用条件link_to:

<%=
 link_to_if(@current_user.nil?, "Login", { :controller => "sessions", :action => "new" }) do
   link_to(@current_user.login, { :controller => "accounts", :action => "show", :id => @current_user })
 end
%>