2016-12-14 8 views
0

私のレールアプリでネストされたフォームを使用しています。私はユーザーhas_many user_skillsの関連付けがあります。私のフォームでは、「スキルのユーザー」と「ユーザーのスキル」という2つのセクションがあり、両方のオプションを追加しています。私はuser_skillモデルに 'skill_type'という名前のフィールドを追加して 'in_skill'と 'out_skill'という値を保存している 'スキル'と 'スキル'を区別しました。ネストされたフォームでレールが発生する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_skillsとout_skillsを入れて、あなたのものに反復処理できる状態

た場合、その後、あなたが代わりにかさばるを使用することで反復することができ、スキルの唯一のin_skillタイプを返します。テンプレート

関連する問題