Я использую 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 были похожие проблемы в предыдущих версиях гема здесь и здесь. Они уже решены, поэтому должно быть что-то не так с моей настройкой выше.
Большое спасибо.
====== ОБНОВЛЕНИЕ ======
ой! заметил опечатку в помощнике просмотра! Это должно быть: id_element вместо: id_elements. В настоящее время это делает трюк, то есть он передает идентификатор объекта в параметрах:
например в параметрах:
"replacement_id"=>"4e915ec88a812e2740000353"
Однако он вставляет идентификатор объекта в текстовое поле автозаполнения вместо текста автозаполнения. Может найти способ обойти это.
====== ОБНОВЛЕНИЕ ========
Чтобы обойти невозможность отображения текста автозаполнения в текстовом поле (в данный момент отображается идентификатор), я внес следующие изменения:
Просмотр: я использовал параметр: 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]
: name - это метод, который я поместил в модель:
def replacement_name
"#{self.name}"
end
При этом текст отображается в текстовом поле автозаполнения, но теперь идентификатор выбранного объекта не передается в параметрах, вместо него используется текст (как это было изначально).