2010-12-15 22 views
1

是一個RoR newbiw和你的幫助將不勝感激。Ruby on Rails - Ajax檢索相關的選擇數據

我有3種型號 - 提交,供應商和lnksupplier

class Submission < ActiveRecord::Base 
has_many :lnksuppliers, :dependent => :destroy 
has_many :suppliers, :through => :lnksupplier 
accepts_nested_attributes_for :lnksuppliers 
end 

class Lnksupplier < ActiveRecord::Base 
belongs_to :submission, 
belongs_to :supplier 
end 

class Supplier < ActiveRecord::Base 
has_many :lnksuppliers, :dependent => :destroy 
has_many :submissions, :through => :lnksupplier 
end 

的lnk_supplier表有3個字段 - 其主鍵,supplier_id,submission_id。 要將供應商關聯到提交,用戶從包含從供應商表中檢索到的所有供應商的下拉列表中進行選擇,並將該ID存儲在lnk_supplier表中。見下面的代碼:

<%= f.select(:supplier_id, options_for_select(Supplier.find(:all).collect {|p| [ p.SUP_COMPANY, p.ID ] })) %> 



    <%= observe_field("submission_lnksuppliers_attributes_0_LPL_SUP_FK", 
     :update => "span1", 
     :url => { :action => :find_supplier_details }, 
     :with => "'id='+value") %> 

回答

2

退房observe_field;它允許您通過Ajax將選定的值從下拉列表傳遞到Rails控制器。然後,在您的控制器中,使用選定的ID來檢索模型並將結果呈現回頁面。

編輯添加:OK,您發佈的observe_field代碼是一個好的開始;其餘的是:1)在您的控制器中,從參數中獲取id並使用它來檢索與該供應商關聯的數據,以及2)呈現rjs文件,該文件指定頁面上的哪個元素將該數據添加到該部分,用於將該數據呈現爲HTML。

+0

非常感謝您的幫助:)我發佈了以上的observe_field代碼 – Kim 2010-12-16 14:03:24