rails3-jquery-autocomplete, передача идентификатора объекта в параметрах в приложении Rails

Я использую 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

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


person Iz103    schedule 07.10.2011    source источник


Ответы (1)


Эта линия

  = 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'}

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

person rmagnum2002    schedule 09.10.2011