1

4つの属性を持つフルーツモデル:name, :characteristic1 ,:characteristic2,:characteristic3があります。フルーツテーブル:characteristic1 ,:characteristic2,:characteristic3では、フィールドは6つのチェックボックスから値を受け取ります。フルーツテーブルに6つのフィールドをすべて追加したくないためです。ユーザーは3つしか選択できません。チェックボックスで選択して、忘れずに:characteristic1 ,:characteristic2,:characteristic3に挿入してください:name_fieldをtext_fieldとして受け入れる名前のフィールド?これはコントローラで行う必要があると確信していますが、howは分かりません。私は2つの新しいモデルを作成するためにあなたを言うだろうフォームを保存する前にcheck_boxの値を操作してください

フォーム

 <%= form_for @fruit ,:url=>{:action =>"create"} do |f| %> 
     <%=f.text_field :name %> 

     <%=f.fields_for :characteristics do |c| %> 
     <!--Characteristics checkboxes --> 
     <%end%> 
     <%=f.submit "submit" %> 

答えて

1

:特性をしてFruitCharacteristic

フルーツがfruitCharacteristic

トラフ多くの特性を持っているとするクールな何かを見つけるために、このAPIのページを読んでいましたフォームの問題を解決する

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

UPDATE: これは多対多の

<ul> 
    <% Characteristic.all.each do |c| %> 
     <li><%= check_box_tag :characteristics_ids, c.id, @fruit.characteristics.include?(c), :name => 'fruit[characteristics_ids][]' %> 
     <%= label_tag :characteristics_ids, c.name %></li> 
    <% end %> 
</ul> 
+0

私はそれを避けたいと思っていました。できるだけ単純なものがほしいと思っていました。 – katie

+0

あなたのやり方では、一貫性を保証することは難しく、例えば、特定の特性を持つすべての果物もまた困難になることがあります。 –

+0

データベーステーブルに30個のフィールドを追加するのは普通の習慣ですか? – katie

1

のために働く必要がありますあなたが唯一の3つのカテゴリーを選択するユーザーを制限したいので、チェックボックスの3セレクトボックス/ 3セットを提供することをお勧めします"characteristic1"、 "characteristic2"、 "characteristic3"のような行に沿って表示されます。コントローラでは、単にparams [:fruit] [:characteristic1]などの値を使用してアクセスすることができます。

関連する問題