2012-01-05 8 views
0

**こんにちは、私は、ユーザーが自分の詳細情報を挿入することができます一つのアドレス帳を構築しようとしています誰も。はレール

  1. ユーザーはフォームから彼の情報を挿入することができます。数字は家庭や個人のタイプのように1つ以上の情報を追加したい場合は動的フィールドを提供します。 私のクエリは、レールの形にそれらの動的な値をバインドし、DBにデータを送信する方法である。**

私のモデルでは、インフォタイプの情報の名前と情報データ を持っているデータを持つことができ、ユーザのように見えます例えば、ユーザは、私が今私この

<%= form_for @client_info, :validate => true do |f|%> 
<% if @client_info.errors.any? %> 
<div id="error_explanation", class="alert-message Warning"> 
    <h2><%= pluralize(@client.errors.count, "error") %> Occured</h2> 
    <ul> 
     <% @client.errors.full_messages.each do |msg| %> 
     <li> 
      <%= msg %> 
     </li> 
     <% end %> 
    </ul> 
</div> 
<% end %> 
<select id = "opts" > 
    <option value = "0">Select Option</option> 
    <option value = "1">Phone Number</option> 
    <option value = "2">Address</option> 
    <option value = "3">Date</option> 
    <option value = "4">Email</option> 
    <option value = "5">Link</option> 
</select> 
<form> 
    <div id="ap"></div> 
</form> 
<script type="text/javascript"> 
    $(document).ready(function() { 

     $("#opts").change(function() { 
      if($("#opts").val() == ("1")) { 
       $("#ap").append('<div id="phn"><select id ="phn"><option>Personal</option><option >Home</option><option >Custom</option></select> <input type ="text" id="ad"></input>' + '<a href="#" class="remove1" id="rm" >Remove</a></div>'); 
      } 
      if($("#opts").val() == ("2")) { 
       $("#ap").append('<div id= "add"><select id ="add"><option>Home Address</option><option >Work Address</option><option >Custom</option></select> <textarea rows="2" cols="20"></textarea>' + '<a href="#" class="remove2" id="rm" >Remove</a></div>'); 
      } 
      if($("#opts").val() == ("3")) { 
       $("#ap").append('<div id ="date"><select id ="date"><option>Birthday</option><option >Anniversary</option><option >Custom</option></select> <input type ="text" id="datepic" ></input>' + '<a href="#" class="remove3" id="rm" >Remove</a></div>'); 
      } 
      if($("#opts").val() == ("4")) { 
       $("#ap").append('<div id ="email"><select id ="email"><option>Home Email</option><option >Work Email</option><option >Custom Email</option></select> <input type ="text"></input>' + '<a href="#" class="remove4" id="rm" >Remove</a></div>'); 
      } 
      if($("#opts").val() == ("5")) { 
       $("#ap").append('<div id="link"><select id ="link"><option>Profle</option><option >Blog</option><option>Homepage</option><option>Custom</option></select> <input type ="text"></input>' + '<a href="#" class="remove5" id="rm" >Remove</a></div>'); 
      } 

     }); 
     $('.remove1').live('click', function() { 
      $("#phn").remove(); 
      return false; 
     }); 

    }); 

</script> 
<div class="actions"> 
    <%= f.submit :class => "btn primary" %> <a href="<%= clients_path %>" class="btn">Cancel</a> 
</div> 
<% end %> 

ようにそれをやっている別のtype.Pleaseヘルプの彼が望んでいるとして、多くの数字
を挿入することができますインフォタイプ=数値infoname = HOMEPHONEのinfodata = 23623623を挿入することができますこのHTML生成フィールドを自分のレールに追加したい 形?

答えて

0

すべての入力は、あなたがそれらをループし、作成したアクションにあなたのコントローラで実用的にそれらを保存することができ、のparamsとして渡されます。

0

私は、それらの間の1対多の関係を持つ別のモデルではこのような何かの数字を入れたい:次に、あなただけの場所することができますUserInfoモデル用のコントローラを追加することができます

class User 
    has_many :user_infos 
end 

class UserInfo 
    belongs_to :user 

    # attributes: 
    # user_id (what user this info belongs to) 
    # type (could be Number, Email, whatever) 
    # name (an identifier like "home phone", "work email" etc) 
    # data (the actual value) 
end 

を情報をユーザーに追加します。

+0

私はこのアプローチでこれをやりました。私はただ1つのモデルファイルでそれをやりたいのです...返信のための感謝。 –

+0

次に、ドキュメントベースのデータベース(例:mongodb) 、またはuser_infosのシリアル化された配列をユーザーモデルのテキストフィールドに格納するだけです。その2番目のオプションは、それは一種の乱雑しかし、「番号で検索」機能または類似を実装しようとすることができます。 – Frost

+0

ねえマーティンはあなたが私は、コードを追加し、いくつかの変更を行いましたもう一度私の質問に目を通してくださいすることができます。.. –