rails3-jquery-autocomplete, передача идентификатора объекта в параметрах в приложении Rails - PullRequest
4 голосов
/ 07 октября 2011

Я использую rails3-jquery-autocomplete (версия rails3-jquery-autocomplete (1.0.2)) в приложении Rails 3.0.10 с Mongoid. Драгоценный камень работает как шарм, у меня есть только одна маленькая проблема. Буду признателен за любую помощь в ее решении.

Я в основном пытаюсь передать идентификатор результата автозаполнения в параметрах. В настоящее время это то, что я делаю.

В контроллере:

class FeaturesController < ApplicationController
  autocomplete :feature, :name
end

По виду:

= autocomplete_field_tag :replacement_id, ' ', autocomplete_feature_name_features_path,  :id_elements => '#replacement_id'

Файлы маршрутов

resources :features do
  get :autocomplete_feature_name, :on => :collection
end

Автозаполнение работает нормально. Единственное, что вместо передачи идентификатора объекта автозаполнения (используя: id_elements => '#replacement_id'), он передает текст.

Вот что я получаю в параметрах:

Parameters: {"feature"=>{"status"=>"Replaced"}, "replacement_id"=>"Property agreements", "commit"=>"update_status"}

В настоящее время значением «replace_id» является «Соглашения о собственности», то есть текст автозаполнения.

Я искал похожие проблемы. Я обнаружил, что в списке проблем на Github были похожие проблемы в предыдущих версиях гема здесь и здесь . Они уже решены, поэтому, возможно, что-то не так с моей настройкой выше.

Большое спасибо.

====== ====== UPDATE

упс! заметил опечатку в виде помощника! Должно быть: id_element вместо: id_elements. В это время трюк, т. Е. Он передает идентификатор объекта в параметрах:

например. в параметрах:

"replacement_id"=>"4e915ec88a812e2740000353"

Однако он вставляет идентификатор объекта в текстовое поле автозаполнения вместо текста автозаполнения. Можно найти способ обойти это.

====== UPDATE ========

Чтобы обойти невозможность отображения текста автозаполнения в текстовом поле (в данный момент он показывает идентификатор), я внес следующие изменения:

Просмотр: я использовал опцию: update_elements

= autocomplete_field_tag :replacement_id, '', autocomplete_feature_name_features_path, :update_elements => {:id => '#input#replacement_id', :name => 'input#replacement_id'}

Контроллер:

autocomplete :feature, :name, :display_value => :replacement_name, :extra_data => [:name]

: имя - это метод, который я поместил в модель:

def replacement_name
 "#{self.name}"
end

При этом текст отображается в текстовом поле автозаполнения, но теперь идентификатор выбранного объекта не передается в параметрах, а вместо текста (как он был изначально).

1 Ответ

0 голосов
/ 10 октября 2011

Эта строка

  = autocomplete_field_tag :replacement_id, '', autocomplete_feature_name_features_path, :update_elements => {:id => '#input#replacement_id', :name => 'input#replacement_id'}

должна выглядеть, вероятно, как

= autocomplete_field_tag :replacement_id, '', controllername(ex: users)_autocomplete_feature_name_path, ....

в любом случае, я использовал это в представлении без следующей строки:

 :update_elements => {:id => '#input#replacement_id', :name => 'input#replacement_id'}

может быть выесть другая задача, но попробуйте.

...