2010-10-08 31 views
0

我有以下型号使用复选框以从多到许多链接表参数

class Outbreak < ActiveRecord::Base 
    has_many :risks 
    has_many :factors, :through => :risks 
end 

class Risk < ActiveRecord::Base 
    belongs_to :outbreak 
    belongs_to :factor 
end 

class Factor < ActiveRecord::Base 
    has_many :risks 
    has_many :outbreaks, :through => :risks 
end 

Risk table 
id : integer 
outbreak_id : integer 
factor_id : integer 
details : text 

鉴于/爆发/编辑

<div id="factor_div"> 
    <% for factor in Factor.find(:all, :conditions => {:outbreak_type => @outbreak.outbreak_type}) %> 
     <div> 
     <%= check_box_tag "outbreak[factor_ids][]", factor.id , @outbreak.factors.include?(factor) %> 
     <%= factor.name %> 
     <%= text_field_tag "risk[details][]", @outbreak.risks.each{ |risk| if risk.factor_id == factor.id; risk} %> 
     </div> 

    <% end %> 
    </div> 

我想编辑风险模型details属性(并从@outbreak.risks数组中填充正确的text_field)。 是否有可能通过遍历因子(主要是静态变量的表格 - 必须由最终用户偶尔改变)来检查每个爆发.risk是否具有factor_id或am我只是想着这个错误的方式?

(不能认为 - 它的星期五下午和阳光明媚的....和theres啤酒花园在路上^^)。

回答

0

首先,更正关联并更新您的结果。

class Factor < ActiveRecord::Base 
    has_many :risks 
    has_many :outbreaks, :through => :risks 
end 
+0

干杯Shreyas - 完全错过了那个关联:D,我已经编辑了包含它的代码 – Pasted 2010-10-12 09:56:30

+0

尝试使用formtastic。所有的关联,同时创建这些形式是自动管理的,用最少的大惊小怪。 – Shreyas 2010-10-12 12:12:43

+0

感谢您的输入Shreyas - 我确实经历了Formtastic(railscasts ofc!),对于带有复选框的HABTM协会来说似乎很好 - railscasts教程很好地解决了这个问题(尽管直接填充链接表并不那么明显,并且会可能需要模型中的某种附加功能来获取和设置属性)。但是......一如既往的情况是,客户改变主意,想要不同的东西! – Pasted 2010-10-15 15:53:04