rails3-jquery-autocomplete引用id与formtastic

Mar*_*vid 6 jquery-ui ruby-on-rails formtastic

我刚刚开始我的Rails应用程序,我有以下问题 - 我想使用jQuery UI和自动完成,因此使用了gem rails3-jquery-autocomplete.我也使用formtastic作为我的rails表格.

我有两个型号:

顾客:

class Customer < ActiveRecord::Base
  has_many :carts
end

create_table :customer do |t|
  t.column :lastname, :string
  t.column :forename, :string
end
Run Code Online (Sandbox Code Playgroud)

大车:

class Cart < ActiveRecord::Base
  belongs_to :customer
end

create_table :cart do |t|
  t.column :costumer_id, :integer
end
Run Code Online (Sandbox Code Playgroud)

正如gem的文档中所解释的,我在CartController中创建了自动完成配置:autocomplete :customer, :lastname, :full => true

在我看来,使用formtastic代码看起来像这样:

<%= semantic_form_for @cart do |f| %>
    <%= f.inputs do %>
    <%= f.input :customer,
        :as => :autocomplete,
        :url => autocomplete_customer_lastname_carts_path,
        :id_element => '#cart_customer_id' %>
Run Code Online (Sandbox Code Playgroud)

我的主要问题是,如何处理id的东西.我的意思是,我想在我的购物车模型中存储客户的参考ID,而不是名称本身.我认识到可以:id_element选择引用id输入字段来存储表单中的id.我发现,这种组合似乎存在问题,并找到了一个潜在的解决方案.

我可以做到这一点,<%= f.input :customer_id, :as => :hidden %>但是我真的不知道该怎么写:<%= f.input :customer, :as => :autocom....是:客户对此有正确的解决方案吗?这种方法会给我以下内容:"cart"=>{"customer"=>"26","customer_id"=>"0"}

有没有人有想法,可能我完全误解了整体:id_element事情......

rbi*_*ock 2

您的迁移中还出现了错误的列名称。

create_table :cart do |t|
  t.column :customer_id, :integer
end
Run Code Online (Sandbox Code Playgroud)

好的,我找到了:)

因此,您需要使用 customer_id 创建一个隐藏字段,并告诉自动完成来更新此输入值。标签:update_elements => {}

<%= autocomplete_field_tag "cart_customer_name", "" , autocomplete_customer_lastname_carts_path, :id_element => "#customer_customer_id", :update_elements => {} %><br />
<%= f.hidden_field :customer_id %>
Run Code Online (Sandbox Code Playgroud)

因此 :id_element 是选择结果时要更新的 id 元素。