我刚刚启动了我的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事情......
答案 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元素。