2016-04-08 14 views
0

Elde etmeye çalıştığım hedef, kullanıcının aramaya filtre uygulayacağı bir düğmeyi tıklamasına izin vermektir. Sayfam müzik sanatçılarına adanmıştır ve kullanıcı "Pop" seçeneğini seçtiğinde, sayfanın yalnızca "pop" sanatçılarını göstererek yenilenmesini ister. İşte Raylar - yeni tablo girişleriyle serinletici sayfa

Ben sanatçıları görüntülemek için kullanıyorum html + yakut geçerli:

<% #prints the artists that match the search, prints all for empty search %> 
     <% @artists.each_slice(3) do |artists| %> 
      <div class="row"> 
       <% artists.each do |artist| %> 
        <div class = "artist_images"> 
         <%= link_to image_tag(artist.artist_art, class: 'show_image'), artist_path(artist) %><br/><br/> 
        </div> 
       <% end %> 
      </div> 
     <% end %> 

     <% #prints message showing that the search does not match %> 
     <% if [email protected]? %> 
     <h3><center style = "color: white">There are no artists containing the term(s) "<%= params[:search] %>". Please try 'Adele', 'Drake', 'Kanye West', or 'Taylor Swift'</center></h3> 
     <% end %> 

denetleyici aşağıdaki yöntemleri vardır:

def index 
    @artists = Artist.all 
    end 

    def randomPop 
    @artists = Artist.where(:genre => "\nPop").random(9) 
    end 

Herkes ben değiştirme hakkında gidebilir biliyor mu Tüm sanatçılardan @artists değişkeni sadece bir tuşla tıklatıldığında pop olanlar için mi?

+0

Çok emin değilim ancak bir WebSocket ile verileri dinamik olarak istemek için Faye gibi başka bir sunucuyu kullanmalısınız, tıpkı bir senkronize olmayan uygulamada yaptığınız gibi (bir sohbet uygulaması gibi). Veya AJAX kullanın. – EvilTak

+0

Tüm sayfanın yenilenmesini veya AJAXy şekilde yapmasını ister misiniz? –

+0

@Petr Gazarov, sayfa oldukça küçük olduğundan tüm yenileme iyi olacak – QQPrinti

cevap

2

dayalı denetleyicisi

<%= button_to "Pop", artists_path, method: :get, params: { artist_genre: "Pop" } %> 

,

bir where fıkra olmalı
def index 
    if params[:artist_genre] 
    @artists = Artist.where(:genre => params[:artist_genre]).random(9) 
    else 
    @artists = Artist.all 
    end 
end 
+0

Bunun büyük olasılıkla bir cevap olduğunu hissediyorum ama hala hiçbir şey almıyorum. – QQPrinti

+0

Asla sorun değil, dizenin tek bir ayrışmasıydı. Çok teşekkür ederim! – QQPrinti

1

Bu klasik railscast episode is on point. Bunu arama kutunuzu nasıl ayarlayacağınız için kullanırdım. Eğer değiştirebilecek tek şey/güncelleme:

if search 
    find(:all, :conditions => ['name LIKE ?', "%#{search}%"]) 
else 
    find(:all) 
end 

muhtemelen, durumunuza" senin görünümünde

if search 
    where("genre = ?", your_genre) 
else 
    all 
end