【问题标题】:Not getting the :id of element using AutoComplete jquery没有使用 AutoComplete jquery 获取元素的 :id
【发布时间】:2012-03-07 14:12:01
【问题描述】:

伙计们,我正在使用 jquery Autocomplete 到我的 rails 3.1 应用程序来获取我想要的国家/地区参数中的元素我已经完成了所有提到的事情,但仍然没有将 id 作为参数 我的代码是

<%= 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

所以请大家帮我解决这个问题,谢谢

【问题讨论】:

  • 你有没有得到这个工作?我遇到了同样的问题,并且此问题或相关问题的答案均​​无效。很想知道你是怎么解决的。

标签: ruby-on-rails ruby ruby-on-rails-3.1 autocomplete jquery-autocomplete


【解决方案1】:

尝试将:element_id=&gt;"#country_id" 更改为:element_id=&gt;"#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-autocomplete 添加一些源

  # 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。

【讨论】:

  • 嘿 Naveed 感谢您的回答,但是按照您的建议更改代码后,我仍然没有得到:id
  • 你能检查自动完成文本文件并查看生成的 htlm。这里有“data-id-element”吗?它的价值是什么?你的浏览器支持html5吗?
  • 现在我按照你的建议使用表单助手,我生成的 html 是
  • hmm,“element_id”不例外,应该是“data-id-element”。可能是它引起的问题。您使用的是哪个宝石? github.com/crowdint/rails3-jquery-autocomplete。这个?
  • 你的“rails3-jquery-autocomplete”
【解决方案2】:

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

使用 form_for 帮助器创建自动完成代码后,它应该返回参数。

【讨论】:

    【解决方案3】:

    您需要添加一个隐藏字段。这就是自动完成将插入您的 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" %>
    

    【讨论】:

      【解决方案4】:

      您需要为隐藏字段提供一些 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-01
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 2016-04-13
        • 1970-01-01
        相关资源
        最近更新 更多