2016-12-14 72 views
0

我在我的rails应用程序中使用嵌套窗体。我有用户has_many user_skills关联。现在在我的表单中,我有两个部分'用户在技能'和'用户输出技能',并为两者添加更多选项。我在我的user_skill模型中添加了一个名为'skill_type'的字段,以区分'in skills'和'out skills',分别保存值in_skill和out_skill。嵌套窗体问题rails 4.0

但我很困惑,我该如何在轨道中处理它。

我已经在我的表单中添加了这个,但这不会帮助我。

.col-xs-12.no_pad.skils-fieldset    
    %legend In Skills 
    = f.fields_for :user_skills do |user_skill| 
     = render :partial => "users/user_skills", :locals => {:f => user_skil l} 
    = link_to_add_fields "Add", f, :user_skills, true, "users/user_skills" 


.col-xs-12.no_pad.skils-fieldset    
    %legend Out Skills 
    = f.fields_for :user_skills do |user_skill| 
     = render :partial => "users/user_skills", :locals => {:f => user_skil l} 
    = link_to_add_fields "Add", f, :user_skills, true, "users/user_skills" 

显然它会在这两个部分中为该用户填充所有技能。

我该如何处理?

我尝试添加的条件是这样的:

-if user_skill.skill_type == 'in_skill' 
    = render :partial => "users/user_skills", :locals => {:f => user_skil l} 

什么是这样做的更好的办法?

回答

0
user_skills.select {|skill| skill.skill_type == 'in_skill'} 

上面的代码将只返回in_skill类型的技能,然后你可以遍历,而不是使用笨重的,如果条件

你也可以把in_skills和out_skills在不同的变量和重复那些在它的模板