rails3-jquery-autocomplete引用id与formtastic

时间:2012-03-18 14:04:10

标签: ruby-on-rails jquery-ui 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

购物车:

class Cart < ActiveRecord::Base
  belongs_to :customer
end

create_table :cart do |t|
  t.column :costumer_id, :integer
end

正如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' %>

我的主要问题是,如何处理身份证件。我的意思是,我想在我的购物车模型中存储客户的参考ID,而不是名称本身。我认识到有可能采用:id_element选项来引用id输入字段以在表单中存储id。我发现,这种组合形式似乎存在问题,并且发现了潜在的solution

我可以使用<%= f.input :customer_id, :as => :hidden %>执行此操作,但我真的不知道该写些什么:<%= f.input :customer, :as => :autocom...。是:客户对此有正确的解决方案吗?这种方法会给我以下内容:"cart"=>{"customer"=>"26","customer_id"=>"0"}

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

1 个答案:

答案 0 :(得分:2)

您的迁移中也有错误的列名。

create_table :cart do |t|
  t.column :customer_id, :integer
end

好吧我找到了它:)

因此您需要使用customer_id创建一个hidden_​​field并告诉自动完成更新此输入值。标签:update_elements =&gt; {}

<%= autocomplete_field_tag "cart_customer_name", "" , autocomplete_customer_lastname_carts_path, :id_element => "#customer_customer_id", :update_elements => {} %><br />
<%= f.hidden_field :customer_id %>

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