2017-12-09 7 views
0

私はフォームを持っています。このフォームから配列変数を同じ名前で転記します。 (私の悪い英語のため申し訳ありません。)ここで は一例です:データベーステーブルに配列の変数を追加する方法

<input type="text" name="name[]" class="form-control"> 

それは[ "A"、 "B"、 "C"]のように来ている

私はからMySQLへこの変数を保存する必要がありますアレイ。配列ではありません。ただ一つ一つ。

は、私はいくつかの通常のSQLクエリを保存することができます知っているが、私は私が使用する必要があります知らないか、私はどのように使用できるかのparamsは、許可を必要とする私のポストコントローラ

array_length = params[:type].size 
for i in 0..array_lenth 
    type = params[:type][i] 
    name = params[:name][i] 
    title = params[:title][i] 
    value = params[:value][i] 

    #And save code. 
end 

から作成します。何かのように

def form_params 
    params.require(:form).permit(:id, :type, :name, :value, :title, :post_id) 
end 

私がこれを使用する場合、どのように必要な変数を決定することができます。私と私の英語のため申し訳ありませんが助けてください:)

注:私は、新しい投稿フォームを持っていると私は投稿フォームに別のテーブルにいくつかの変数を追加する必要があります(それは、それらの配列である)

+0

まず、create controllerでparamsの代わりにform_paramsを使用してください。 forループは必要ありません –

答えて

0

あなたがいることを指定する必要がありますフォームのため、その後

def form_params 
    params.require(:form).permit(:id, :type, :value, :title, :post_id, name: [:name_of_attribute, :another_name_for_attribute]) 
end 

そして:paramが実際の配列、のようなものである

name_for_attribute属性あなたWAの名前です
<div class="field"> 
<%= form.text_field "name[name_for_attribute]" %> 
</div> 

何らかの理由で誰かが検査によって配列に別の奇妙なことを追加しようとした場合

"form" => {"name"=>{"name_for_attribute"=>"The entered value"} 

あなたはあなたが好きなためname_for_attributeを変更してすることができますあなたのようなのparamsを読み込みますコントローラのようNTそれは、することがHTMLでは、必要なすべての属性をフィルタリングします。

希望すると便利です。どうすればいいのか教えてください

関連する問題