2017-12-09 2 views
0

Ich habe ein Formular. Veröffentlichen von Array-Variablen aus diesem Formular unter demselben Namen. (. Sorry für mein schlechtes Englisch) ist hier das Beispiel:Wie die Variablen des Arrays zur Datenbanktabelle hinzugefügt werden

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

Es kommt wie [ "a", "b", "c"]

speichere ich brauche diese Variablen zu MySQL von Array. Nicht mit Array. Nur eins nach dem anderen.

Erstellen von meinem Posten Controller

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 

Ich weiß, dass ich mit einiger normalen SQL-Abfrage speichern kann, aber ich weiß nicht, soll ich verwenden oder, wie ich params erfordert Erlaubnis verwenden kann. etwas wie

Wenn ich dies verwende, wie kann ich die notwendigen Variablen bestimmen. Bitte helfen Sie mir und sorry für mein Englisch :)

Hinweis: ich neue Post Form haben und ich muss einige Variablen in eine andere Tabelle in der Post Form hinzufügen (es ist diese Arrays)

+0

zuallererst, verwenden Sie form_params anstelle von Parametern in der create-Controller. Sie brauchen die for-Schleife nicht –

Antwort

0

Sie müssen angeben, dass die param ist eine tatsächliche Array, so etwas wie:

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

Und dann für die Form:

<div class="field"> 
<%= form.text_field "name[name_for_attribute]" %> 
</div> 

Wo die name_for_attribute ist der Name des Attributs Sie wa nt es zu sein, so auf dem Controller, um die params wie zu lesen:

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

Sie können die name_for_attribute für ändern, was Sie wollen und wenn aus irgendeinem Grund jemand eine andere seltsame Sache in das Array hinzuzufügen versucht, durch die Inspektion HTML, Sie werden trotzdem alle gewünschten Attribute filtern.

Hoffe, das hilft! Lassen Sie mich wissen, wie es geht

Verwandte Themen