2015-09-28 104 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' %>')