2011-08-03 17 views
9

Użyłem poniższy kod:wyłączyć link_to tag w Rails3 +

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

Chcę wyłączyć ten link i wizerunku, więc dodałem :disabled=>true do kodu, ale to nie wyłączając. Dlaczego nie i jak je wyłączyć?

+0

Od pytania i odpowiedzi są odrzucane, a ja domyślam się, że to niewłaściwe podejście. Czy ktokolwiek, z większym doświadczeniem, może zasugerować, dlaczego wszystko zostało przegłosowane? –

+0

Nie można powiedzieć, dlaczego odrzucono, ale prawdopodobnie dlatego, że nie są * łatwe * odpowiedzi. Wyłączone nie wyłącza hiperłączy - http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-87355129 Musisz użyć warunkowego linku lub JavaScript, aby wyłączyć wyłączenie –

Odpowiedz

6

W przeciwieństwie do przycisków, hiperłączy nie mogą być "wyłączone". Można wykonać następujące czynności jednak zakładając, że masz jQuery zawarte na stronach:

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

Dodaj następujący Javascript do swojej strony:

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

to wyłącza wszystkie wyłączone linki - $ ("a [wyłączone]"). click (function (e) { e.preventDefault(); }); –

0

1) Jednym z rozwiązań jest renderowanie tylko image_tag kiedy robisz nie chcę linku i użyj linku_do, gdy chcesz, aby łącze było włączone. można używać zmiennych instancji do kontrolowania tego, co należy renderować.

2) lub użyj Javascript zgodnie z sugestią.

Użyj 2, jeśli chcesz to zrobić dynamicznie.

-1

może używać link_to Warunkowo:

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

Nie jestem pewien, co @lamrin chciał się z tym pytaniem, ale przypuszczam, że jest coś takiego:

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

Z tym kodem powyżej, obraz miałby link, jeśli warunek? prawda

W moim przypadku poniżej kod ten pracował (a bardziej skomplikowany przykład):

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 

Ten link może również pomóc z tym podejściem:

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

1

w odpowiedzi na swoje pytanie , nie ma opcji: disabled dla pomocnika link_to w Railsach i nie jest to również poprawny atrybut dla elementów. Wierzę, że powodem, dla którego ludzie mają tendencję do mylenia tego w Railsach, jest to, że ": disabled => true" działa, jeśli używasz Bootstrap. Aby rozwiązać ten problem, możesz postępować zgodnie z podejściem Gupty lub po prostu dodać Bootstrap (co da ci również domyślny CSS, więc ludzie nie będą sfrustrowani, próbując kliknąć link)!

Re: Metoda link_to w szynach: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to)

RE: "wyłączone" atrybut ciągu elementów: Is 'disabled' a valid attribute for an anchor tag

Re: Bootstrap "niepełnosprawnego" klasy lub atrybutu z bootstrap: http://getbootstrap.com/css/#anchor-element-1

+0

@lamrin, czy to była odpowiedź na twoje pytanie? Używasz Ruby on Rails i chcesz tylko dodać ": disabled => true" do tego kodu, prawda? Daj mi znać, jeśli jest coś, czego nadal potrzebujesz pomocy! –