Rails 5自动完成 - 将ID发送到模型而不是自动完成字段

时间:2017-06-12 15:03:20

标签: ruby-on-rails ruby autocomplete ruby-on-rails-5 jquery-ui-autocomplete

我已经实现了一个Rails表单自动完成系统,就像这个演员Autocomplete with HTML results中的那个一样。问题是:我需要获取自动填充建议中所选对象的ID,因为它是我的外键,我只能选择文本。<%= f.text_field :concelho_id, class: 'autocomplete form-control', data: { source: autocomplete_concelhos_path } %>

我尝试将result_value更改为id而不是name,但是当选择建议时,会自动写入输入字段中的id。我不希望这样,因为它让用户感到困惑。

module Autocomplete
  class Concelhos < ApplicationAutocomplete

    private

    def result_partial(concelho)
      ApplicationController.new.render_to_string(partial: 'concelhos/autocomplete', locals: { concelho: concelho }).html_safe
    end

    def result_value(concelho)
      concelho.name
    end

    def results
      @results ||= Concelho.where('name LIKE :query', query: "%#{params[:term]}%").limit(5)
    end

  end
end

如何将此ID传递给模型参数?我尝试隐藏字段并更改模型自动完成类但没有成功。我还想过远程form_tags使用params,但我想这需要一个提交按钮,我也不希望这样。我也不知道fields_for方法是否适用于此类问题。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我也在努力解决这个问题。 在你的模型中,尝试这样的事情。

def self.text_search(query)
  if query.present?
      where("name @@ :q, q: query)
  else
      @concelho = Concelho.all
  end
end