2011-08-03 34 views
9

tôi đã sử dụng đoạn mã sau:Disable link_to thẻ trong Rails3 +

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

Tôi muốn vô hiệu hóa liên kết này và hình ảnh, vì vậy tôi thêm :disabled=>true vào mã, nhưng nó không phải vô hiệu hóa. Tại sao không, và làm thế nào để vô hiệu hóa chúng?

+0

Kể từ tất cả các câu hỏi và câu trả lời đều bị bỏ phiếu, tôi cho rằng đây là phương pháp sai. Bất cứ ai, với kinh nghiệm nhiều hơn, đề nghị tại sao tất cả mọi thứ đã xuống bình chọn? –

+0

Không thể nói lý do tại sao bỏ phiếu xuống, nhưng có lẽ vì chúng không phải là câu trả lời * dễ dàng *. Bị vô hiệu hóa không vô hiệu hóa siêu liên kết - http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-87355129 Vì vậy, bạn sẽ cần một liên kết có điều kiện hoặc JavaScript để thực hiện việc vô hiệu hoá –

Trả lời

6

Không giống như nút, siêu liên kết không thể bị "tắt". Bạn có thể làm những điều sau đây tuy nhiên, giả sử bạn có jQuery bao gồm trên các trang của bạn:

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

Thêm javascript sau vào trang của bạn:

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

mất điều này để vô hiệu hóa tất cả các liên kết bị vô hiệu hóa - $ ('a [disabled]'). bấm (function (e) { e.ngăn chặn Mặc định(); }); –

0

1) Một giải pháp là để render chỉ IMAGE_TAG khi bạn làm không muốn liên kết và sử dụng link_to khi bạn muốn kích hoạt liên kết. bạn có thể sử dụng các biến mẫu để kiểm soát nội dung cần hiển thị.

2) hoặc sử dụng Javascript như được đề xuất.

Sử dụng 2 nếu bạn muốn tự động thực hiện.

-1

Bạn có thể sử dụng link_to có điều kiện:

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

Tôi không chắc chắn những gì @lamrin muốn với câu hỏi này, nhưng tôi nghĩ rằng nó là một cái gì đó như thế này:

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

Với mã này ở trên, hình ảnh sẽ có một liên kết nếu điều kiện? là đúng

Trong trường hợp của tôi mã này dưới đây làm việc (một ví dụ phức tạp hơn):

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 

Liên kết này cũng có thể giúp với cách tiếp cận này:

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

1

Trong câu trả lời cho câu hỏi của bạn , không có: tùy chọn vô hiệu hóa cho helper link_to trong Rails, và nó không phải là một thuộc tính hợp lệ cho một phần tử. Tôi tin rằng lý do mọi người có xu hướng bị lẫn lộn với điều này trong Rails là ": disabled => true" không hoạt động NẾU bạn đang sử dụng Bootstrap. Vì vậy, để khắc phục vấn đề này bạn có thể làm theo cách tiếp cận của Gupta, hoặc chỉ cần thêm Bootstrap (mà sẽ cung cấp cho bạn một số CSS mặc định là tốt, vì vậy mọi người không cảm thấy thất vọng khi nhấp vào liên kết)!

Re: Phương pháp link_to trong đường ray: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to)

Re: các "khuyết tật" thuộc tính trên một yếu tố: Is 'disabled' a valid attribute for an anchor tag

Re: Bootstrap lớp "tàn tật" hoặc thuộc tính với bootstrap: http://getbootstrap.com/css/#anchor-element-1

+0

@lamrin, điều này có trả lời câu hỏi của bạn không? Bạn đang sử dụng Ruby on Rails và chỉ muốn có thể thêm ": disabled => true" vào mã này, phải không? Hãy cho tôi biết nếu có bất cứ điều gì bạn vẫn cần trợ giúp! –