rails:3033
From: naopontan <naopontan@g...>
Date: Mon, 2 Mar 2009 16:51:36 +0900
Subject: [rails:3033] 1対多の関係のモデルとビューの扱い方について
初めまして。基本的な部分が身についてない感のある者です。 すみませんが、ご教示願います。 「注文」1つに対し、複数の「注文明細」の関係があります。 ◆モデル # 注文 class Order < ActiveRecord::Base has_many :order_details, :dependent => :destroy end # 注文明細(商品と、その個数) class OrderDetail < ActiveRecord::Base belongs_to :order end ◆ビュー 現状、新規作成(new)の Viewは以下の感じです。 <% form_for(@order) do |f| %> 注文者: <%= f.text_field(:name) -%> <%# ここで全ての商品名と、その購入数入力のテキストフィールドを出力 %> 商品A: <input name="hoge[商品A]" type="text"> 個 商品B: <input name="hoge[商品B]" type="text"> 個 商品C: <input name="hoge[商品C]" type="text"> 個 <% end %> ◆コントローラ def create @order = Order.new(params[:order]) params[:hoge].each do |key, value| next if value.empty? @order.order_details << OrderDetail.new(:hoge => key, :count => value) end ... 質問 ビューやコントローラは、もう少しうまい記述の仕方はありませんか? 添削頂ければ幸いです。 ポイントは、 「入力画面では全商品を表示するが、必要インスタンスは個数の入力された物のみ」 という点です。 商品の個数が入力された OrderDetail だけインスタンスを生成したいので、 このやり方が一般的でしょうか? -- ML: rails@r... 使い方: http://QuickML.com/