未使用AutoComplete jquery获取元素的:id



伙计们,我正在使用jquery自动完成我的rails 3.1应用程序来获取我想要的国家/地区。当我键入国家/地区首字母缩写时,它会给我国家/地区的名称,当我提交表格时,它发送params中该元素的:id。我已经完成了所有提到的事情,但仍然没有将id作为params获得我的代码是

<%= form_for(@company_admin ,:url => admins_path) do |f| %>
 .
 .
 .
 .
 #all fields for company admin
          <%= f.fields_for :company do |company| %>
              #all fields for company
              .
              .
              <%= label_tag :Country %>
              <%= autocomplete_field_tag :country ,"" ,  autocomplete_country_name_admins_path ,:element_id=>"#country_id",:size => 75,:class => "field" %>
              </tr>
          <%end %>
          <%= f.submit 'Create' %> 

  <%end  %>

我得到了像这样的参数

Parameters: {"commit"=>"Create", "country"=>"india", "company_admin"=>{"company_attributes"=>{"address"=>"gt road", "category"=>"IT", "company_name"=>"google", "sub_domain"=>"classfieldidsub_domain", "telephone_number"=>"(+111) 111-111-1111"}, "gender"=>"Mr.", "last_name"=>"pqr", "email"=>"abv@gmail.com", "first_name"=>"abc"}, "authenticity_token"=>"X6bgRzJ5ydXJCyZ8+GhN57Z+O2K9gL1dsV15YQaXa84=", "utf8"=>"✓"}

params[:country]我得到了"印度"我希望它应该给出:id的"印度"

所以伙计们请帮我弄清楚这一点,谢谢

您需要添加一个隐藏字段。这就是自动完成将插入您的id值的地方。然后你从你的控制器中的params散列中读取它

  <%= f.hidden_field :country_id, :id => "my_country_id" %>
  <%= f.autocomplete_field :country ,  autocomplete_country_name_admins_path ,:element_id=>"#my_country_id",:size => 75,:class => "field" %>

尝试用:element_id=>"#id" 更改:element_id=>"#country_id"

      <%= f.fields_for :company do |company| %>
          ....
          <%= f.label :Country %>
          <%= f.autocomplete_field :country ,  autocomplete_country_name_admins_path ,:element_id=>"#id",:size => 75,:class => "field" %>
          </tr>
      <%end %>  

此外,我鼓励您使用表单助手方法,而不是表单助手标签,如果它们可用的话:)

--更新从rails3添加一些源jquery自动完成

  # Returns an input tag of the "text" type tailored for accessing a specified attribute (identified by +method+) and
  # that is populated with jQuery's autocomplete plugin.
  #
  # ==== Examples
  #   autocomplete_field(:post, :title, author_autocomplete_path, :size => 20)
  #   # => <input type="text" id="post_title" name="post[title]" size="20" value="#{@post.title}"  data-autocomplete="author/autocomplete"/>
  #
  def autocomplete_field(object_name, method, source, options ={})
    options["data-autocomplete"] = source
    text_field(object_name, method, rewrite_autocomplete_option(options))
  end
#
# Method used to rename the autocomplete key to a more standard
# data-autocomplete key
#
private
def rewrite_autocomplete_option(options)
  options["data-update-elements"] = JSON.generate(options.delete :update_elements) if  options[:update_elements]
  options["data-id-element"] = options.delete :id_element if options[:id_element]
  options
end

似乎autocomplete_field生成:element_id作为文本文件的html5 element data attribute再次从宝石源

:extra_data 
By default, your search will only return the required columns from the database needed to populate your form, namely id and the column you are searching (name, in the above example).

看起来他们将通过向给定element_id的对象发送消息来返回id。

我同意上面的代码,试试看。我要让你使用的代码不是form_for助手应该使用的形式。

在使用form_for助手生成自动完成代码后,它应该返回params。

您需要为隐藏字段提供一些id,以便在该隐藏字段中填充所选元素的id。例如:

<%= f.hidden_field :country_id, id: 'my_country_id' %>
<%= f.autocomplete_field :country, autocomplete_country_name_admins_path ,id_element: '#my_country_id', size: 75, class: 'field' %>

对于那些想与Form_tag一起使用的人:

<%= hidden_field_tag :country_id, '', id: 'my_country_id' %>
<%= autocomplete_field_tag :country, autocomplete_country_name_admins_path ,id_element: '#my_country_id', size: 75, class: 'field' %>

有关详细说明和参考,
请访问:http://www.rubydoc.info/gems/rails3-jquery-autocomplete/0.6.2

相关内容

  • 没有找到相关文章

最新更新