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事情......
您的迁移中还出现了错误的列名称。
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 元素。