2017-10-12 21 views
3

私はチェックボックスとラジオボタンを持つ多くのフィールドを持つフォームを持っています。それぞれに「その他」オプションを追加したいと思います。ユーザーが他のオプションをクリックすると、将来使用するためにデータベースに保存する必要がある新しいオプションを追加することを許可する必要があります。私はこの質問は事前にあなたの助けのためにも、他の人と感謝に役立つかもしれない願ってい新しいオプションをrailsの選択/ラジオボタン/チェックボックスに追加する

<label> Goals: </label><br> 
<%= f.collection_check_boxes :goal_id, Admin::Goal.all, :id, :title, checked: @assessment.goal_id, :include_hidden => false do |b| %> 
    <%= b.label class:"label-checkbox" do %> 
    <%= b.check_box + b.text%> 
    <% end %> 
<% end %> 

は、ここに私の現在のコードです。 :)

+0

私の解決策を確認してください。 – krishnar

答えて

2

Uは私がother_optionアレイとあなたの目標のコレクション配列をマージここ

  • やっている何本

    <% other_options = [{id: "other",title: "other"}] %> 
    
    <label> Goals: </label><br> 
    <%= f.collection_check_boxes :goal_id, Admin::Goal.all + other_options, lambda{|a|a["id"]}, lambda{|a|a["title"], checked: @assessment.goal_id, :include_hidden => false do |b| %> 
        <%= b.label class:"label-checkbox" do %> 
        <%= b.check_box + b.object[:title]%> 
        <% end %> 
    <% end %> 
    

    ようcollection_check_boxをカスタマイズする必要があります。

  • 他の配列は関係ではないので、id、titleの取得方法を変更する必要があります。同じようにアクセスするためにlambdaを使用しています。
  • 目標のみを使用している場合はb.textが機能します。カスタムハッシュ、つまりother_option配列を使用しているので、b.objectとして値にアクセスしてからタイトルにアクセスする必要があります。これは両方で機能します。
+0

ありがとうございました。 :) – Vishal

関連する問題