我使用rails-jquery-autocomplete(1.0.2)[rails-4 setup]的activeadmin(1.0.0.pre1)。
我能够自动完成查询并对其进行搜索;但是,当搜索返回并且索引表单重新加载时,搜索框(在侧边栏面板中)显示包含在["字符串"](方括号和引号)中的查询字符串
e.g。如果我使用AWonderfulDay
进行搜索并选择一个自动完成的元素,则表单重新加载会导致["AWonderfulDay"]
显示为输入元素的内部文本(搜索框)
以下是生成的UI元素
<input data-autocomplete="/comments/autocomplete_comments" id="q_comments_in" name="q[comments_in]" type="text" value="["SearchString"]" 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
答案 0 :(得分:0)
i solved it by correcting my use of ransack.
In models/comment.rb:
scope :search_comment, lambda { |x| ..}
def self.ransackable_scopes(auth_object = nil)
[:search_comment]
end
In admin/profile.rb
filter :search_comment, as: :autocomplete, url: "controller_url",
label: 'Search Comment', required: false,
wrapper_html: {style: 'list-style: none'}