jQuery,activeadmin:带有搜查的自定义过滤器。如何更改搜索框中显示的文本

jQuery, activeadmin: custom filter with ransack. how to alter displayed text in search box

我得到了 activeadmin (1.0.0.pre1) 使用 rails-jquery-autocomplete (1.0.2) [rails-4 setup].

我能够自动完成查询并调用搜索;但是,当搜索 returns 和索引表单重新加载时,搜索框(在侧边栏面板中)显示用 ["string"] 包裹的查询字符串(方括号和引号)

例如如果我使用 AWonderfulDay 和 select 搜索自动完成的元素,则表单重新加载会导致 ["AWonderfulDay"] 显示为输入元素(搜索框)的 innerText

下面是生成的UI元素

<input data-autocomplete="/comments/autocomplete_comments" id="q_comments_in" name="q[comments_in]" type="text" value="[&quot;SearchString&quot;]" class="ui-autocomplete-input" autocomplete="off">

已使用 ransack 实施搜索,过滤器为:

  filter :comments_in, as: :autocomplete, url: '/comments/autocomplete_comments',
                          label: 'Search Comments', required: false,
                          wrapper_html: {style: "list-style: none"}

指向一个琐碎的:

  ransacker :comment,
            :formatter => ->(comment) {
              data = User.joins(:profile => :comment).where("comments.comment = ?", comment).map(&:id)
              data = data.present? ? data: nil
  } do |parent|
    parent.table[:id]
  end

我知道这是因为 in 谓词(不会发生在 cont 谓词中,我在另一个过滤器中运行良好,例如 filter :comments_cont 不会导致这个)

编辑 1:

此外,https://github.com/activerecord-hackery/ransack/issues/345 显示了具有相同行为的快照。

这也让我想到了另一个问题 Custom search with ransacker

我应该早点查找它们。抱歉!

编辑 2:

这是我的模型关系:

class User < ActiveRecord::Base
  belongs_to :profile, :inverse_of => :users, :touch => true

class Profile < ActiveRecord::Base
  has_one :comment, dependent: :destroy

class Comment < ActiveRecord::Base
  belongs_to :profile, touch: true

我通过更正我对 ransack 的使用解决了这个问题。

在models/comment.rb:

scope :search_comment, lambda { |x| ..}

def self.ransackable_scopes(auth_object = nil)
  [:search_comment]
end 

在admin/profile.rb

filter :search_comment, as: :autocomplete, url: "controller_url",
                   label: 'Search Comment', required: false,
                   wrapper_html: {style: 'list-style: none'}