クラス名簿の提出。一度に3人の生徒を追加します。各学生には、最初、最後の年齢があります。
質問:すべての生徒を配列の配列で取得するにはどうすればよいですか?
students[0] => Array (
["first"] => "first name for 0",
["last"] => "last name for 0",
["age"] => "age for 0"
),
students[1] => Array (
["first"] => "first name for 1",
["last"] => "last name for 1",
["age"] => "age for 1"
),
...
詳細
1人の生徒の場合:
<input type="text" name="first">
<input type="text" name="last">
<input type="text" name="age">
次のように、複数の学生を別々の配列で返すことができます。
<input type="text" name="students[first][]">
<input type="text" name="students[last][]">
<input type="text" name="students[age][]">
これは、firsts、lasts、およびagesの配列を返します
students["first"] = [array of first names]
students["last"] = [array of last names]
students["age"] = [array of ages]
理論的には、同じインデックスにアクセスすることで、学生のすべての情報を取得できます(各配列で「3」と言います)。
プログラムでフォームにインデックスを追加したくありません。
欲しくない:
<input type="text" name="students[hardcoded_index][first]">
<input type="text" name="students[hardcoded_index][last]">
<input type="text" name="students[hardcoded_index][age]">
何らかの理由で重要な場合は、ビューにRailsを使用しますが、フォームヘルパーまたはHTMLを使用できます。
[]
)入力名のstudents
の後。Rack :: Utils.parse_nested_query でいじくり回すと、次のように必要なペイロードを取得できるようです。
<!-- first student -->
<input type="text" name="students[][first]">
<input type="text" name="students[][last]">
<input type="text" name="students[][age]">
<!-- second student -->
<input type="text" name="students[][first]">
<input type="text" name="students[][last]">
<input type="text" name="students[][age]">
空の括弧([]
)の後students
。これは、students
パラメータを配列にすることをラックに指示します。 (同じ名前の)後続のparamsが出現すると、新しい要素が開始されます。
POST /myroute?students[][first]=foo&students[][last]=bar&students[][age]=21&students[][first]=baz&students[][last]=qux&students[][age]=19
次のように解析されます:
{"students" => [
{
"first" => "foo",
"last" => "bar",
"age" => "21"
},
{
"first" => "baz",
"last" => "qux",
"age" => "19"
}
]}
さらに読む: http://codefol.io/posts/How-Does-Rack-Parse-Query-Params-With-parse-nested-query
質問が古いのはわかっていますが、将来の読者にも私の経験を追加したいと思います。
データを処理する PHP環境で、@ messanjahのメソッドは機能しません。
組み込みのserializeArray
やserialize
などのデータを解析するメソッドも、期待どおりに解析していません。
これは私がこれまでに試したものです...
students[name]
students[][name]
-配列に自動的にインデックスを付けることを意図していたため、非常に奇妙ですstudents[name][]
どちらも機能しませんでしたが、これはstudents[<hardcoded-index>][name]
は[〜#〜] php [〜#〜]で機能しました
この方法に対する質問ですがですが、PHPここに上陸するユーザーにとっては便利です)近い将来、アスカーがRuby on Railsに必要でした。
methodインデックスをハードコーディングすることを選択するのはあなた次第です。javascriptを使用してよりクリーンな方法を使用するか、またはmanually hard cod eを使用できます。最初はフォーム要素にあります。
乾杯