2011-10-15 4 views
1

は、私がトーナメント形式での質問の一つは、私が構築する必要がありますどのように多くの裁判所決定することがフォームを持っている必要があります Formtasticはオンザフライで正しいフィールドを作成しますか?私は<a href="https://github.com/justinfrench/formtastic" rel="nofollow">Formtastic</a>を使用してもaccepts_nested_attributes_forを使用しています

class Tournament < ActiveRecord::Base 
    has_many :courts, :dependent => :destroy 
    accepts_nested_attributes_for :courts, :allow_destroy => true 

class Court < ActiveRecord::Base 
    belongs_to :tournament 

モデル

..hereです。ここに私のアプローチは、今

def new 
    @tournament = Tournament.new 
    25.times do 
    @tournament.courts.build 
    end 

で、ビューに

<%= semantic_form_for @tournament do |f| %> 
    <%= f.inputs do %> 
    <%= f.input :number_courts, :hint => "How many courts are available?" %> 
     <%= f.semantic_fields_for :courts do |ct| %> 
      <%= ct.input :name %> 
     <% end %> 

このアプローチの問題は、私は、彼らがから入力した金額のみを必要とするとき、本当に私はいつも25個のフィールドをユーザーに促しますということです質問 "利用可能な裁判所はいくつですか?"

これを行うか、単にリンクでそれらを追加する方法はあり

...任意のアイデアが

答えて

1

確かにこれを行うには、複数の方法があります。ここに1つあります。

新しいアクションには25のコートが事前に作成され、新しいページに追加されますが、表示されません(表示:なし)。クライアント側では、ユーザーが裁判所の数を入力/選択すると、裁判所の入力フィールドの数が表示されます。あなたは非常にシンプルなjavascriptが必要です。レイズコントローラ側では、ユーザが選択した裁判所の数を超えた裁判所のフィールドをすべて無視することができます

裁判所のフィールドは配列として配列されます。スライスを使用!余分な裁判所を取り除くために。

params[:tournament][:courts].slice!(0..params[:tournament][:number_courts].to_i) 
+0

は、論理的なようだが、あなたは裁判所のフィールドは配列としてで来るあなたのparams内のすべての空の裁判所のフィールド – Trace

+0

を無視する方法についてのサンプルスニペットを持っています。スライスを使用!余分な裁判所を取り除くために。 params [:tournament] [:courtts] .slice!(0..params [:トーナメント] [:number_courts] .to_i) –

関連する問題

 関連する問題