2012-03-10 21 views
7

Dinamik olarak başka bir tanımlı CSS sınıfı olan 'th.hilite' (eğer bir bağlantı) olan normal bir tablo üstbilgisini (tıklatılmışsa) değiştirmeye çalışıyorum. Bu bağlantı, bu sütunu basitçe sıralar ve kullanıcı listeyi her sıraladığında üstbilgi vurgulanmış olmalıdır.Koşullu olarak yakut denetleyicisinden CSS stili ayarlama

söz konusu sınıf değiştirilmesi gerektiğini görünümü, şuna benzer:

%table#mytable 
    %thead 
    %tr 
     %th= link_to 'Title', mytable_path(:sort => 'title'), :id => 'title_header' 

sorum basitçe: nasıl ve ne dinamik sınıf ayarlayabilirsiniz ila% th.hilite başlığı ise tıklandığında?

+0

içinde params ve oturum karmaları ve set uygun değişkenlerin iyi şekilde yapmak gerekir. –

+20

Soruları doğrudan saas-class.org ev ödevi 2 ödevinden göndermemelisiniz. Bir şeyi nasıl yapacağınızı sormalısınız .. ama sorunuza tam olarak cevap vermemek için. – Ilan

+7

En önemlisi, sorunun bir kısmını nasıl yanıtlayacağınızı doğrudan gösteren kodu göndermemiş olmanız gerekir. Onun sadece kötü davranışı. – Ilan

cevap

14

bunun etrafında bir yol bulabilirse görüşleriniz mantığı (hatta şart) koymamaya özen gösterin. bu ortak hata kaçınmak için, kontrolörler

Sen Yakut, JavaScript bunu yapmak zorunda
# In your view 
%th{:class => @title_header}= link_to 'Title', my_path(:sort => 'title'), :id => 'title_header' 

# In your controller 
sort = params[:sort] || session[:sort] 
if sort == 'title' 
    ordering = {:order => :title} 
end 
+0

|| session [: sort] 'in nedenini merak ediyorsanız, bunun nedeni, bir sortable sütunundan başka bir şeye tıklayabilirsiniz. Bu durumda, paramız karmaşasının süresi dolduğundan, sıralama işleminin geri alınmasını istemezsiniz. "Eğer params [: sort] ise" gibi bir kontrolörde de biraz mantığa ihtiyacınız olacak!= session [: sort] sonra oturum [: sort] = sort "türünün bir türü – mehtunguh

+0

Bu cevabı anlamaya çalışıyorum. Dokümanlarda, title_header'ın farklı değerler için nasıl olabileceğini anlamak için" what? " her th? – Alisso

26

doğrudan görünümünden bağlayabilir şunlardır: Ayrıca içinde @sort örnek değişkeni beyan etmek zorunda kalacak, ancak

%th{:class => ("hilite" if @sort == "title")}= link_to 'Movie Title'...

senin denetleyicisi ve veya numaralınumaralı yayınlara ayarlayın, hangi sütuna göre sıralama yapıyorsunuz. (Yani @sort = params[:sort])

+3

aslında bir örnek değişkeni bildirmek zorunda değilsiniz, sadece params kullanabilirsiniz [: sort] – Sudhi

3

BTW sürece param maç sütun adının değerleri olarak - .. gerek her biri

def index 
    @by=params[:by] 
    @movies = Movie.order(params[:by]).all 
    end 
3

Javascript kodlamak için veya jquery gerekli değildir

aşağıdaki HAML çalışacak

%th{:class=>('title' == @sortby)?'hilite':""}= link_to 'Movie Title', movies_path(:sort => 'title'), :id => 'title_header'