2011-10-07 22 views
4

我在使用Mongoid的Rails 3.0.10应用程序中使用rails3-jquery-autocomplete(版本rails3-jquery-autocomplete(1.0.2))。宝石就像魅力一样,只有一个小问题。希望在解决它的任何帮助。rails3-jquery-autocomplete,在params中传递Rails应用程序中的对象ID

我基本上试图传递参数中的自动完成搜索结果的id。目前,这是我正在做的。

在控制器:

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(使用:id_elements =>'#replacement_id'),而是传递文本。

这是我得到的PARAMS:

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

目前“replacement_id”的值是“房产协议”,这是自动完成的文本。

我一直在寻找相关的问题。我发现在Github上的问题列表中,在以前版本的gem herehere中出现过类似的问题。他们已经被解决了,所以上面的设置肯定有问题。

非常感谢。

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

哎呀!在视图助手中发现了一个错字!它应该是:id_element而不是:id_elements。在mo中,这样做的窍门是,即它传递参数中的对象ID:

例如,在参数中:

"replacement_id"=>"4e915ec88a812e2740000353" 

但是,它将对象ID插入到自动填充文本框中,而不是自动完成的文本。可能会找到解决办法。

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

为了避免不能够显示在文本框中自动填充文本(它显示了ID的时刻),我有做了以下修改:

查看:我用的是: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 

否则显示在自动填充文本框中的文本,但现在所选择的对象ID未在PARAMS通过,文本是代替(因为它原来)。

回答

0

此行

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

可能是你有不同的任务,但试试看吧。

相关问题