Ruby on Rails - 用于检索所做选择的关联数据的Ajax

时间:2010-12-15 20:06:46

标签: ruby-on-rails

是一个新生儿,你们的帮助将非常受欢迎。

我有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") %>

1 个答案:

答案 0 :(得分:2)

查看observe_field;它允许您通过Ajax将所选值从下拉列表传递给Rails控制器。然后,在您的控制器中,您使用所选的ID来检索模型并将结果呈现回页面。

编辑添加:好的,您发布的observe_field代码是一个良好的开端;其余的是:1)在你的控制器中,从params获取id并使用它来检索与该供应商相关的数据,以及2)渲染一个rjs文件,该文件指定页面上要将该数据添加到哪个元素,以及哪个部分用于将该数据呈现为HTML。