2015-09-28 108 views
2

我正嘗試在導軌中創建一個即時搜索引擎。 我的搜索模式是tournament 我加入了gem 'pg_search'我的Gemfile 在我的比賽模式,我有:導軌中的即時搜索引擎

class Tournament < ActiveRecord::Base include PgSearch pg_search_scope :search, :against => [:name, :address, :city, :club_organisateur, :starts_on, :ends_on, :postcode], :using => {:tsearch => {:prefix => true} }

搜索發生在我Tournament#index看法,所以在我的比賽控制我有:

def index 
    @tournaments = policy_scope(Tournament) 
    if @tournaments.blank? && current_user.judge? 
     render 'pages/partials/_no_tournaments_judge' 
    elsif @tournaments.blank? 
     render 'pages/partials/_no_tournaments' 
    elsif params[:content].blank? 
    elsif params[:content] 
     @tournaments = @tournaments.search(params[:content]) 
     respond_to do |format| 
     format.js {} 
     format.html{ render :index } 
     end 
    end 
    end 

在我看來(超薄)錦標賽/指數我有:

div class="container" 
    div class="row" 
    div class="col-xs-12" 
     h1 class="emperor" Recherche de tournois 
     = form_tag tournaments_path, method: "get", :remote => true do || 
     div class="form-group" 
      = label_tag :content, "recherche" 
      = text_field_tag :content, nil, class: "form-control" 

     = render "tournaments" 

這裏是比賽部分:

div class="row" id="tournament_row" 
- @tournaments.each do |tournament| 
    div class="col-md-4" 
     div class="panel panel-default" 
     div class="panel-heading" 
      h2 
      = tournament.name 
      br 
      small = tournament.city.upcase 

     div class="panel-body" 
      p 
      'Du 
      strong> = tournament.starts_on.strftime("%d/%m/%Y") 
      'au 
      strong = tournament.ends_on.strftime("%d/%m/%Y") 
      ul 
      - tournament.competitions.each do |competition| 
      li 
       = "#{competition.category} #{competition.genre.text}" 
     div class="panel-footer" 
      = link_to 'En savoir plus', tournament_path(tournament), class: 'btn btn-primary' 

,這裏是我的index.js.erb的文件:

$('#tournament_row').html("<%= render 'tournaments' %>"); 

當我檢查我的日誌每次我提交表單,則params [:內容]發送給我的錦標賽#索引動作,我可以看到 @tournaments = @tournaments.search(params[:content])正在工作。

我的問題是我的比賽/索引視圖永遠不會更新來顯示@tournaments中包含的錦標賽......它總是保持不變。問題是什麼 ?

+0

你會更好使用的術語 「實時搜索」 :) –

回答

2

嘗試添加escape_javascript

$('#tournament_row').html("<%= escape_javascript(render 'tournaments') %>"); 

$('#tournament_row').html('<%=j render 'tournaments' %>')