2010-12-19 10 views
1

Indholdモデルで複数のIndholdを作成する必要があります。しかし、私が提出するとき、私は1 Indholdパラメタを得るだけで、私はいくつかのチェックボックスをチェックしても、それは1つのインドッドを作成します。 新しいチェックボックスの幅をインドホールド幅で作成します。 マイindhold形式:Rails複数のオブジェクトをチェックボックスで作成する方法

<%= form_tag({:action => 'create'}, {:multipart => true}) %> 

    <% for indhold in Indhold.find(:all) %> 
    <%= check_box_tag("indholds[navn]", indhold.navn) %> 
    <%= indhold.navn %><br /> 
    <% end %> 

</div> 
    <div class="actions"> 
    <%= submit_tag("Submit") %> 
    </div> 

マイindholdコントローラ:

def new 
    @indhold = Indhold.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.xml { render :xml => @indhold } 
    end 
    end 

    def create 
    @indhold = Indhold.new(params[:indhold]) 
    respond_to do |format| 
     if @indhold.save 
     format.html { redirect_to(@indhold, :notice => 'Indhold was successfully created.') } 
     format.xml { render :xml => @indhold, :status => :created, :location => @indhold } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @indhold.errors, :status => :unprocessable_entity } 
     end 
    end 

敬具、 Railsはチェックボックスにindholds [navn] []に

+0

Indholdを作成しようとしているようですが、既存のIndholdから子供のnavn値を含んでいますが、Indhold.navnはhas_manyではないようです - それは正しいですか? Indholdモデルのコードを追加できますか? –

+0

私は子供を含むIndholdを作成しようとしていません。私はindholdモデルから多くのIndholds幅チェックボックスを作成しようとしています。 –

答えて

2

まず、変更indholds [navn]初心者タグ。それは複数の値をparamsに送ります。しかし、Indhold.newは新しいレコードを1つだけ作成しようとしています。

@indholds = [] 
@errors = [] 
params[:indhold][:navn].each do |navn| 
    indhold = Indold.new(:navn => navn) 
    if indhold.valid? 
    @indholds << indhold.save 
    else 
    @errors += indhold.errors 
    end 
end 

これは実際には新しいものの標準的な使用ではありません。私はmultiple_newまたは同様の動作を変更します。また、@ indhold.errorsの代わりに@errorsをフォーム内で使用する必要があります。

+1

メソッドのエラーが発生しました。あなたは私がフォームを持っていることを示すことができます、そして、コントローラは見えるべきですか? –

関連する問題