我使用了以下代码:
<%= link_to image_tag("edit.png", :alt => "Edit"), edit_user_path(user) %>
我想禁用此链接和图片,因此我在代码中添加了:disabled=>true
,但它没有禁用。为什么不,以及如何禁用它们?
答案 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
%>