質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

4097閲覧

フォーム内、eachで複数データ記録。

takeke

総合スコア60

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

1クリップ

投稿2018/04/27 10:25

ecサイトのオーダーフォームを作っているのですが、調べてもわからない点があるので質問させていただきます。

現在作っているものは、カートに商品を入れて、そこから注文情報の入力(オーダーフォーム)。不備がなければ送信し、確定メールが届き、カートはデリートされるというものでして、オーダーフォームでは、ユーザーが入力する欄とは別に、自動でカートの中の情報とユーザーidが入力されるようになっています。そこで問題が起きました。
カートには中間テーブルとしてline_itemというのがあり、それが持っているのが商品(product_id)と数量(quantity)となるのですが、こちらそれぞれ1種類しか登録されません。カートの中の商品が1種類の場合は問題ないのですが、複数種類ある場合は2つ目以降はなかったことになってしまいます。中間テーブルのline_itemもカートがなくなると一緒に無くなります。
フォームにはeachとhidden_fieldを使っています。

注文確定し、cartやline_itemがなくなった後に注文した時のcartの中身が全てわかるようにするにはどのように記述したらよいでしょうか?

<%= form_for(@order) do |f| %>      <% @cart.line_items.each do |cart| %>         <%= f.hidden_field :product_id, value: cart.product_id %>         <%= f.hidden_field :quantity, value: cart.quantity %>      <% end %> <% end %>

上でproduct_idとそのquantityがそれぞれ引き出せて、そこからカートの注文した際の中身を再現できると思ったのですがダメでした。

以上ですが何かお気付きのところありましたらご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

配列を埋め込みたいときは

ruby

1<%= form_for(@order) do |f| %> 2     <% @cart.line_items.each do |cart| %> 3        <%= hidden_field_tag "product_id[]", value: cart.product_id %> 4        <%= hidden_field_tag "quantity[]", value: cart.quantity %> 5     <% end %> 6<% end %>

のように記述すると
コントローラ側で受け取る際のストロングパラメーターで

ruby

1def cart_params 2 params.permit(product_id:[],quantity:[]) 3end

と記述することで、配列形式で取得できます。

投稿2018/04/30 12:07

ReiLeiLei1025

総合スコア236

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takeke

2018/05/21 09:52

回答ありがとうございました。 結果的に別のアプローチに変更したためこちらのコードは使わなかったのですが、調べていた際によくわからなかった記述方法だったので参考になりました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問