ruby-on-rails - Rails 中的即时搜索引擎

标签 ruby-on-rails search-engine partial

我正在尝试在 Rails 中创建一个即时搜索引擎。 我的可搜索型号是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 上 View ,所以在我的锦标赛 Controller 中我有:

  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[:content] 都会发送到我的锦标赛#index 操作,我可以看到 @tournaments = @tournaments.search(params[:content])正在工作。

我的问题是我的锦标赛/索引 View 永远不会更新以显示@tournaments 中包含的锦标赛...它始终保持不变。有什么问题吗?

最佳答案

尝试添加escape_javascript

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

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

关于ruby-on-rails - Rails 中的即时搜索引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32817383/

相关文章:

从 2 列中搜索 php mysql

seo - 谷歌如何每天看到更新的内容?

java - 如何使用 Trie 进行部分自动完成

jsf - 如何仅处理 commandButton 操作中的素面对话框?

java - 具有多个参数的 EasyMock 构造函数

ruby-on-rails - 如何在 heroku 中为单个应用程序添加多个子域?

ruby-on-rails - Ruby on Rails - RSpec - 重构 lambda 样式测试

ruby-on-rails - Rails 5 处理 ActionController::ParameterMissing 的方法

ruby-on-rails - Rails 应用程序中的 "Tab order"

javascript - 搜索引擎蜘蛛可以看到我使用 jQuery 添加的内容吗?